2017-05-18 71 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