Selenium WebDriver API: ElementNotFoundErrorException lorsque l'Élément est clairement là !
parfois lors de l'exécution de tests sur WebDriver avec le Javascript désactivé, WebDriver se bloque à cause d'un ElementNotFound Erreur quand il trouve un élément, et les tentatives de cliquer dessus.
Cependant, l'élément est clairement là !
Après lecture de ceci : http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_My_XPath_finds_elements_in_one_browser,_but_not_in_others._Wh
Je suis venu à la conclusion que webdriver ne doit pas être en attente jusqu'à ce que la page web a terminé chargé. Comment puis-je utiliser le Webdriver Attendre classe ? Quelqu'un peut-il me donner un exemple ?
OriginalL'auteur KJW | 2010-11-06
Vous devez vous connecter pour publier un commentaire.
Cet exemple a été publié sur Google Groupes. Selon les développeurs de Google:
1 Utilisation implicite attend. Ici, le chauffeur vous attendra jusqu'à ce désignée
délai d'attente jusqu'à ce que l'élément est trouvé. Assurez-vous de lire la javadoc de la
mises en garde. Utilisation:
2 Utilisez les
org.openqa.selenium.support.ui.WebDriverWait
classe. Ce serasondage jusqu'à ce que la condition attendue est vrai, le retour à cette condition que le résultat de l'
(si c'est la recherche d'un élément). C'est beaucoup plus souple que implicites
attend, que vous pouvez définir n'importe quel comportement personnalisé. Utilisation:
OriginalL'auteur nilesh
Prendre nilesh répondre à une étape plus loin, vous pouvez également permettre à plus fine à l'écoute des recherches (par exemple, dans le contexte d'une WebElement) à l'aide de la SearchContext interface:
L'exécution est assurée par un FluentWait<SearchContext> exemple (au lieu de WebDriverWait). Vous donner une belle interface de programmation en l'enveloppant de son exécution et de la nécessaire gestion des exceptions dans un utilitaire méthode (la racine de votre PageObject type de hiérarchie est un bon spot):
Exemple d'utilisation:
Oui, c'est fait. C'est une méthode (définie dans mon premier bloc de code) qui retourne une Fonction qui, à son tour, est appelé à plusieurs reprises par FluentWait jusqu'à ce qu'un objet est retourné, à l'expiration de délai d'attente, ou un non-ignoré exception est levée (selon la première éventualité).
OriginalL'auteur Joe Coder
Couramment Attendre Meilleure approche, car c'est le plus flexible et configurable à la volée (a ignorer les exceptions option, les bureaux de tous, délai d'attente):
Utiliser comme:
Explicite Attendre - eh Bien, c'est le même que
FluentWait
mais avec la pré-configurépollingEvery
et le type d'Attente par exempleFluentWait<WebDriver>
(plus rapide):ImplicitWait - Non recommandé, car il est configuré, une fois pour toutes de votre session. C'est aussi utilisé pour chaque élément et attend que la présence (pas de
ExpectedConditions
etc...):OriginalL'auteur Moshisho