如果找不到元素,为什么Selenium会给出超时异常?

时间:2016-05-19 09:29:22

标签: c# selenium selenium-webdriver webdriver

我在Selenium C#WebDriver中尝试了以下代码片段。 (版本2.50+)。我用多个函数(By.Xpath,By.ClassName,By.CssSelector等)测试了它。

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"));

为什么这不会返回一个空集合或null或甚至NoSuchElementException?我认为它不应该返回超时异常。

例外:

  

"类型' OpenQA.Selenium.WebDriverException'的例外情况发生在   WebDriver.dll但未在用户代码中处理

     

其他信息:对远程WebDriver的HTTP请求   URL的服务器   http://localhost:7055/hub/session/19e937df-9d51-4624-a700-33f0ec6be98c/element   60秒后超时。"

2 个答案:

答案 0 :(得分:4)

您提供了一定的等待时间。因此驱动程序将等待该时间,然后如果驱动程序无法在页面上找到该元素,则会抛出超时异常。

只需删除指定的等待时间即可解决此问题。

我发布了这个答案,因为用户:Kishan Patel并没有将此作为这个问题的答案发布,即使他的评论解决了这个问题。

答案 1 :(得分:0)

IWebDriver driver = new FirefoxDriver();
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 0, 60));
driver.Navigate().GoToUrl("http://google.com");
var resultElement = driver.FindElement(By.ClassName("NonExistingClass"));