使用ImplicitWait时的FindElements超时行为

时间:2017-11-19 01:01:58

标签: c# selenium selenium-webdriver

IWebDriver driver = new RemoteWebDriver(uri, dc);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60);
** Search google and end up at a Google Search Results page
List<IWebElement> elements = new List<IWebElement>();
elements.AddRange(driver.FindElements(By.XPath("//*[@id=\"vn1s0p1c0\"]")));

当我运行它时,如果页面上存在XPath,它会起作用,但如果页面上不存在该Xpath,它将等待,然后在60秒时超时。我虽然FindElements的行为是返回一个空列表,如果找不到该元素。不知道我做错了什么。

1 个答案:

答案 0 :(得分:2)

问题在于指定等待搜索该元素的60秒时间。如果删除设置等待时间的第二行代码,则如果驱动程序页面中不存在该元素,则它将返回IWebElement的空列表。否则,指定60秒后搜索该元素将在60秒后抛出Timeout exception

以下代码会跳过超时问题:

IWebDriver driver = new RemoteWebDriver(uri, dc);
** Search google and end up at a Google Search Results page
List<IWebElement> elements = new List<IWebElement>();
elements.AddRange(driver.FindElements(By.XPath("//*[@id=\"vn1s0p1c0\"]")));