WebDriver Selenium-API: ElementNotFoundErrorException, wenn das Element ist eindeutig !
manchmal bei der Ausführung von tests auf WebDriver mit abgeschalteten Javascript, WebDriver stürzt aufgrund einer ElementNotFound Fehler, wenn es findet ein element, und versuche, darauf zu klicken.
Jedoch, das element ist eindeutig !
Nach der Lektüre dieses : http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_My_XPath_finds_elements_in_one_browser,_but_not_in_others._Wh
Kam ich zu dem Schluss, dass webdriver muss nicht warten, bis die web-Seite vollständig geladen ist. Wie verwende ich die Webdriver Warten Klasse ? Kann mir jemand ein Beispiel geben ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem Beispiel wurde gepostet auf Google Groups. Laut Google-Entwickler:
1 Verwenden implizite wartet. Hier wird der Fahrer warten, bis der designierte
timeout, bis das element gefunden ist. Lesen Sie die javadoc für die
Vorsichtsmaßnahmen. Verwendung:
2 Verwenden Sie die
org.openqa.selenium.support.ui.WebDriverWait
Klasse. Dies wirdpoll, bis die erwartete Bedingung wahr ist, wird das zurück Bedingung ist Ergebnis
(wenn Sie auf der Suche nach einem element). Dies ist sehr viel flexibler als implizite
wartet ab, wie Sie definieren können beliebige benutzerdefinierte Verhalten. Verwendung:
Unter nilesh Antwort einen Schritt weiter, können Sie auch erlauben, feiner abgestimmten Suche (z.B. im Rahmen einer WebElement) mit dem SearchContext-Schnittstelle:
Ausführung erfolgt durch eine FluentWait<SearchContext> Instanz (statt WebDriverWait). Gönnen Sie sich einen schönen programming interface, durch das einwickeln von seine Durchführung und die notwendigen Ausnahmebehandlung in einer utility-Methode (die Wurzel Ihrer PageObject Typ-Hierarchie ist ein guter Ort):
Beispiel:
Fließend Warten - Beste Ansatz, da es die am meisten flexible und konfigurierbare on-the-fly (hat Ausnahmen ignorieren-option, polling jeder, timeout):
Verwenden, etwa so:
Explizite Warten - Nun, es ist das gleiche wie
FluentWait
aber mit vorkonfiguriertenpollingEvery
und der Typ der Warten z.B.FluentWait<WebDriver>
(schneller):ImplicitWait - Nicht zu empfehlen, da es so konfiguriert ist, einmal für alle Ihre Sitzung. Dies ist auch für jedes element suchen, und wartet auf Anwesenheit nur (keine
ExpectedConditions
etc...):