2016-11-22 56 views
0

除了實現自己的多線程,Selenium是否有機制等待並行的多個元素過時?Selenium能夠並行等待多個元素陳舊性(Java)嗎?

我使用這個等待單個元件

WebDriverWait wait = new WebDriverWait(driver, 3); //3 = timeout 
wait.until(ExpectedConditions.stalenessOf(element)); 

我有同時重新創建30個元素,我不將不阻塞30 * 3秒的代碼。

感謝

+0

您不必等待30 * 3秒。每個線程幾乎立即開始正確?如果是這樣,那麼你的總等待時間將只有3秒。 – Raghuveer

+0

是的,我問如何做,如果我不會自己實現多線程。 – user3364652

+0

您可以將第三個參數添加到webdriverwait構造函數中,該參數將輪詢條件之間的默認休眠時間更改爲0.5秒。將其縮小到100毫秒(構造函數需要的毫秒數)。在編寫並行解決方案之前,測量單線程正在進行的時間。如果你想要一個併發的方法,我建議你使用java.util.concurrent包的Future和Callable類。更容易用這個返回主程序的值。 – Grasshopper

回答

0

硒沒有做到這一點。

我的建議是:挑選最長的元素並等待那個元素。

+0

這一切都是並行發生的,所有元素需要等待的時間相同,這就是問題 – user3364652

+1

@ user3364652如果這一切都平行發生,爲什麼不等待** one **元素,然後只驗證所有其他元素也是陳舊? –

+0

弗洛裏安指着我認爲的正確方向 –

0

wait.until只有在條件滿足之前才阻止代碼。超時是最長的時間。

WebDriverWait wait = new WebDriverWait(driver, 3); 
wait.until(ExpectedConditions.stalenessOf(element)); 

在你的代碼,如果ExpectedConditions.stalenessOf是真的在1秒鐘後wait.until將1第二塊。如果ExpectedConditions.stalenessOf在第一次檢查中已經成立,則代碼將立即繼續。

相關問題