我在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秒后超时。"
答案 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"));