Dans le HTML d'une webapp, il y a le code suivant
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
Ce qui est réellement affiché sur la page est une chaîne affichant l'heure.
Dans Selenium Web Driver, j'ai un WebElement
objet faisant référence à l' <input>
utilisation
WebElement timeStamp = waitForElement(By.id("prettyTime"));
Je veux obtenir la valeur de WebElement
, ou, en d'autres termes, ce qui est imprimé sur la page. J'ai essayé tous les WebElement
getters et rien n'a récupéré la valeur réelle que l'utilisateur voit. De l'aide? Merci.
la source
getAttribute("value")
c'est vraiment comment tu fais ça?! Cela n'a aucun sens. Il y a une grande différence entre l'value
attribut d'uninput
élément et savalue
propriété. Selenium fait-il la chose horrible que jQuery fait et les confond?await
lors de l'utilisationgetAttribute
.Vous pouvez faire comme ceci:
cela vous donnera l'heure affichée sur la page Web.
la source
Avec du sélénium 2,
je l'écris généralement comme ça:
OU
la source
Pour les liaisons python, ce sera:
la source
J'utilise la réponse de @ragzzy
Cela fonctionne assez bien et n'altère pas le DOM
la source
Comme mentionné précédemment, vous pouvez faire quelque chose comme ça
Mais comme vous pouvez le voir, votre élément doit avoir un
id
attribut, ainsi que jquery sur votre page.la source
Si la valeur d'entrée est remplie par un script qui a une certaine latence (par exemple, un appel AJAX), vous devez attendre que l'entrée soit remplie. Par exemple
la source
element.GetAttribute ("valeur");
Même si vous ne voyez pas l'attribut "value" dans html dom, vous obtiendrez la valeur du champ affichée sur l'interface graphique.
la source
C'est un peu piraté, mais ça marche.
J'ai utilisé
JavascriptExecutor
et ajouté undiv
au HTML, et changé le texte dans lediv
en$('#prettyTime').val()
J'ai ensuite utilisé Selenium pour récupérer lediv
et saisir sa valeur. Après avoir testé l'exactitude de la valeur, j'ai supprimé le div qui venait d'être créé.la source