150 votes

Utiliser Selenium WebDriver pour récupérer la valeur d'une entrée HTML

Le code suivant figure dans le code HTML d'une application web :

<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime"  readonly="readonly">

Une chaîne de caractères affichant l'heure est effectivement affichée sur la page.

Dans Selenium WebDriver, j'ai un fichier WebElement se référant à l'objet <input> en utilisant :

WebElement timeStamp = waitForElement(By.id("prettyTime"));

Je souhaite obtenir la valeur de l'élément WebElement ou, en d'autres termes, ce qui est imprimé sur la page. J'ai essayé tous les WebElement et rien n'a été fait pour récupérer la valeur réelle que l'utilisateur voit.

249voto

prestomanifesto Points 4135

Essayer element.getAttribute("value")

En text est destinée au texte situé à l'intérieur des balises d'un élément. Pour les éléments de saisie, le texte affiché n'est pas enveloppé par la propriété <input> mais à l'intérieur de la balise value attribut.

Note : L'affaire est importante. Si vous spécifiez "Value", vous obtiendrez une valeur "null" en retour. Ceci est vrai pour C# au moins.

31voto

Praveen Points 81

Vous pouvez procéder de la manière suivante :

webelement time = driver.findElement(By.id("input_name")).getAttribute("value");

Vous obtiendrez ainsi l'heure affichée sur la page web.

21voto

Sajid Manzoor Points 137

Pour les liaisons Python, ce sera le cas :

element.get_attribute('value')

18voto

e1che Points 726

Avec Selenium 2, je l'écris généralement comme suit :

WebElement element = driver.findElement(By.id("input_name"));
String elementval = element.getAttribute("value");

Ou

String elementval = driver.findElement(By.id("input_name")).getAttribute("value");

5voto

raggzy Points 21

Comme cela a été mentionné précédemment, vous pourriez faire quelque chose comme ceci :

public String getVal(WebElement webElement) {
    JavascriptExecutor e = (JavascriptExecutor) driver;
    return (String) e.executeScript(String.format("return $('#%s').val();", webElement.getAttribute("id")));
}

Mais comme vous pouvez le constater, votre élément doit avoir un élément id ainsi que jQuery sur votre page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X