2017-06-20 47 views
2

我期待着有關Selenium中selenium webdriver輪詢時間的正確解釋。Selenium webdriver輪詢時間

據我所知,在下面等待命令將等待40秒,直到特定元素得到可點擊

public void CreateSalesOrder(){ 
     WebDriverWait wait = new WebDriverWait(driver, 40); 
     wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser)); 
      btnNewSalesOrser.click(); 
    } 

在第二個代碼片段我已經添加了「輪詢」命令。

public void CreateSalesOrder(){ 
     WebDriverWait wait = new WebDriverWait(driver, 40); 
     wait.pollingEvery(2, TimeUnit.SECONDS); 
     wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser)); 
     btnNewSalesOrser.click(); 
    } 

輪詢時間的用途是什麼?

回答

4

如果我們沒有提及任何輪詢時間,硒將採取默認的輪詢時間爲500milli秒。即,腳本將每500毫秒檢查網頁中webelement的例外情況。你的第一個代碼片段適用於此。

我們使用pollingEvery覆蓋默認的輪詢時間。在下面的示例中(您的第二個代碼片段),該腳本每2秒檢查一次預期條件,而不是500毫秒。

public void CreateSalesOrder() 
{ 
    WebDriverWait wait = new WebDriverWait(driver, 40); 
    wait.pollingEvery(2, TimeUnit.SECONDS); 
    wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser)); 
    btnNewSalesOrser.click(); 
} 

該輪詢頻率實際上可能有助於減少CPU過載。 請參閱此javadoc獲取更多信息pollingEvery

希望這可以幫助你。謝謝。

+0

謝謝你的傢伙。感謝Monika,答案非常有用 –

1

使用WebDriverWait wait = new WebDriverWait(driver, 40);驅動程序將最多等待40秒直到條件滿足。

使用wait.pollingEvery(2, TimeUnit.SECONDS);指定駕駛員將執行檢查(以查看條件是否滿足)每2秒,直到條件滿足。


總之,這意味着你的驅動程序會檢查每2秒40秒


你也可以指定輪詢間隔作爲Constructor快捷方式:

WebDriverWait wait = new WebDriverWait(driver, 40, TimeUnit.SECONDS.toMillis(2)); 
+0

謝謝老兄。答案是真的有幫助 –

0

爲了理解說明,您必須瞭解顯式等待的輪詢時間。

WebDriverWait wait = new WebDriverWait(driver,40);

這會在拋出TimeoutException之前等待40秒,除非它發現元素在40秒內返回。 WebDriverWait默認每500毫秒調用ExpectedCondition,直到它成功返回,因此ExplicitWait的默認輪詢時間爲500毫秒。

wait.pollingEvery(2,TimeUnit.SECONDS);

在這種情況下,輪詢時間是2秒i。e預期條件在每500毫秒後不會被檢查,應在2秒後檢查,直到特定元素可點擊。

+0

。答案是非常有用的 –