2017-05-18 70 views
1

为了进一步解释,我目前正在使用硒和c#。我的问题是,我的工具运行速度非常快,无需等待元素准备就绪。例如Selenium c#:等到元素出现而不等待给定的时间,否则超时

Thread.Sleep()是不可取的。

给定的等待时间是2秒。该元素将在1秒或更长时间内出现。之后的Thread.Sleep()这样的代码行不可靠。

或者元素存在,但仍然在等待完成Thread.Sleep(),所以它很费时。

我想要的是,如果找到该元素,则无需等待给定的时间,如果在给定的时间没有找到,则超时。

回答

2

这正是explicit waitexpected conditions的用途。

用途例如

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); 
IWebElement element = wait.Until(ExpectedConditions.ElementIsVisible(By locator)); 

这将等待高达至5秒钟的元件是可见的。如果成功,元素将被返回,否则将抛出TimeoutException