Ich habe das folgende Code-Snippet im Selenium C# WebDriver versucht. (Version 2.50+). Getestet habe ich es mit mehreren Funktionen (By.Xpath, By.ClassName, By.CssSelector usw.)Warum gibt Selenium eine Timeout-Ausnahme, wenn ein Element nicht gefunden wird?
var webDriver = new FirefoxDriver();
webDriver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 0, 60));
webDriver.Navigate().GoToUrl("http://google.com");
var resultElement = webDriver.FindElement(By.ClassName("NonExistingClass"));
Warum dies nicht nur eine leere Sammlung zurückgeben oder null oder sogar ein NoSuchElementException? Ich denke, es sollte keine Timeout-Ausnahme zurückgeben.
Ausnahme:
„Eine Ausnahme vom Typ 'OpenQA.Selenium.WebDriverException' in aufgetreten WebDriver.dll aber nicht in Benutzercode
Zusätzliche Informationen behandelt wurde: Die HTTP-Anforderung an den Remote WebDriver Server für URL http://localhost:7055/hub/session/19e937df-9d51-4624-a700-33f0ec6be98c/element Zeitüberschreitung nach 60 Sekunden. "
Sie haben eine bestimmte Zeitspanne gewartet. Der SO-Treiber wartet auf diese Zeit und wenn der Treiber das Element auf der Seite nicht finden kann, wird eine Timeout-Ausnahme ausgelöst. –
Ich habe die angegebene Wartezeit entfernt, es wird sofort eine NoSuchElementException ausgelöst. Das ist was ich will. Vielen Dank! :) – User
Ja. Sie müssen sich um dieses Warten kümmern. :-) –