L'équivalent de waitForVisible/waitForElementPresent dans Selenium WebDriver tests à l'aide de Java?
Avec "HTML" de Sélénium tests (créé avec Selenium IDE ou manuellement), vous pouvez utiliser certains très pratique commandes comme WaitForElementPresent
ou WaitForVisible
.
<tr>
<td>waitForElementPresent</td>
<td>id=saveButton</td>
<td></td>
</tr>
Lors du codage de Sélénium tests en Java (Webdriver /Selenium RC—je ne suis pas sûr de la terminologie ici), est-il quelque chose de similaire, intégré dans?
Par exemple, pour vérifier la présence d'un dialogue (qui prend un certain temps pour ouvrir) est visible...
WebElement dialog = driver.findElement(By.id("reportDialog"));
assertTrue(dialog.isDisplayed()); //often fails as it isn't visible *yet*
Ce qui est le plus propre robuste moyen de code de vérification?
Ajoutant Thread.sleep()
des appels partout dans l'endroit était moche et fragile, et rouler vos propres boucles while semble assez maladroit trop...
- Vous devez utiliser le WebDriverWait classe - check this out pour plus d'information - selenium.googlecode.com/svn/trunk/docs/api/java/index.html
Vous devez vous connecter pour publier un commentaire.
Implicite et Explicite Attend
Implicite Attendre
Explicite Attendre + Conditions Prévues
org.openqa.selenium.support.ui
paquet.De WebDriver docs: Explicite et Implicite Attend
Eh bien, la chose est que vous avez probablement fait, ne veut pas le test à exécuter indéfiniment. Vous voulez juste à attendre plus longtemps avant de la bibliothèque décide de l'élément n'existe pas. Dans ce cas, la solution la plus élégante est d'utiliser implicite d'attente, qui est conçu pour cela:
findElement()
, mais que si cela renvoie avec succès tout de suite etisDisplayed
échoue par la suite qu'il n'est pas visible encore (voir le code Java en question)..?WebDriverWait
qui permet de définir une fonction de callback qui est interrogé. Il est similaire à l'interrogation de vous-même, mais résumés. Il traite également de délais d'attente ainsi. Le code de la réponse doit être adapté un peu, mais vous devriez obtenir l'idée.Un autre moyen d'attendre pour un maximum d'un certain montant, disons, 10 secondes de temps de l'élément à afficher comme ci-dessous:
Pour chaque élément le code ci-dessous peuvent être utilisées: