为了进一步解释,我目前正在使用selenium和c#。我的问题是,我的工具运行得非常快,不需要等待元素的准备。
例如,Thread.Sleep()是不可取的。
给定的等待时间是2秒。元素将出现在一个或多个秒内。在Thread.Sleep()之后,所以代码行不可靠。
或者元素存在,但仍在等待完成Thread.Sleep(),因此很费时。
我想要的是,如果找到了元素,那么就不需要等待给定的时间,如果没有在给定的时间找到,则超时。
发布于 2017-05-18 04:31:10
这正是显式等待和预期条件的作用所在。
使用示例
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
IWebElement element = wait.Until(ExpectedConditions.ElementIsVisible(By locator));这将等待将提高到5秒,以使元素可见。如果成功,元素将被返回,否则将抛出TimeoutException。
更新
ExpectedConditions已经移动,现在位于SeleniumExtras.WaitHelpers
“ExpectedConditions”已经过时:“不再推荐.NET绑定中的ExpectedConditions实现,并将在以后的版本中删除。
为了避免现有代码中的许多更改,将ExpectedConditions导入到一个名为ExpectedConditions的变量中。代码的其余部分保持不变
using ExpectedConditions = SeleniumExtras.WaitHelpers.ExpectedConditions;https://stackoverflow.com/questions/44038509
复制相似问题