2015-02-23 73 views
0

僅第一行是否讓webdriver等待10秒?還是我需要兼得?如何讓webdriver等待,並做了什麼聲明?

WebDriverWait wait = new WebDriverWait(firefoxDriver,10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID))); 

我很困惑什麼語句讓驅動程序等待?這句話足夠嗎?

WebDriverWait wait = new WebDriverWait(firefoxDriver,10); 

回答

1

有三種不同的等待機制Selenium提供了迄今爲止我知道的。 ExplicitImplicitFluent。請參閱this。你提到的那個是Explicit。顯式等待意味着等待元素滿足您告訴WebDriver的某些條件。如元素的可見性(正在使用的元素),元素的存在等。有一個org.openqa.selenium.support.ui中的類名爲ExpectedConditions,它有很多成員提供用於等待元素的不同機制。有關完整列表,請參閱here

再回到你的問題: WebDriverWait wait = new WebDriverWait(firefoxDriver,10);只定義了等待和長度WebDriver應該迫不及待地想見到你所提供條件 實際的等待發生wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID)));(在第二行)。 WebDriver試圖找到與xpathID相匹配的元素,它在頁面上可見,在10s之後它會拋出異常。如果WebDriver10s之前找到目標元素,它將不會等待10s並向前移動。

+1

對我的問題的最好解釋! – ERJAN 2015-02-24 08:16:06

+0

@ERJAN欣賞好話 – Saifur 2015-02-24 12:50:41

1
WebDriverWait wait = new WebDriverWait(firefoxDriver,10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpathID))); 

等待會忽略默認NotFoundException所遇到的(拋出)的情況​​下,在「直到」條件,並立即傳播所有其他人。

您可以通過調用忽略(添加例外)方法將更多內容添加到忽略列表中。

相關問題