隐式等待超时无法正常工作

时间:2017-12-22 12:57:45

标签: vb.net selenium

尝试使用VB.Net Selenium正确阻止执行10秒,因此找到关于SO的隐式等待,并找到了此示例。

        driver.Manage.Timeouts.ImplicitWait = TimeSpan.FromSeconds(10)
        Debug.WriteLine(driver.PageSource)

问题是,我在两行都设置了一个断点,Debug.WriteLine几乎立即被调用。我在这里读到我不应该在这里使用Thread.Sleep,那么为什么超时没有达到预期的效果呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

implicit等待是告诉WebDriver在尝试查找一个或多个元素(如果它们不是立即可用)时将DOM轮询一段时间。默认设置为0.设置后,将为WebDriver对象实例的生命周期设置隐式等待。

可能你错过了括号:

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

您也可以尝试使用以下内容:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

或者,您可以使用ExplicitWait

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(--ELEMENT TO BE VISIBLE--));
  

更可扩展的方法是,您可以将其设置为等待您可能喜欢的任何条件。通常,您可以使用部分预建ExpectedConditions来等待元素变为clickablevisibleinvisible等。

解决方案位于C#.NET。您可能需要在VB.NET中转换一些语法。