尝试使用VB.Net
Selenium
正确阻止执行10秒,因此找到关于SO的隐式等待,并找到了此示例。
driver.Manage.Timeouts.ImplicitWait = TimeSpan.FromSeconds(10)
Debug.WriteLine(driver.PageSource)
问题是,我在两行都设置了一个断点,Debug.WriteLine
几乎立即被调用。我在这里读到我不应该在这里使用Thread.Sleep
,那么为什么超时没有达到预期的效果呢?
谢谢!
答案 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
来等待元素变为clickable
,visible
,invisible
等。
解决方案位于C#.NET
。您可能需要在VB.NET
中转换一些语法。