2016-11-22 50 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在第一次检查中已经成立,则代码将立即继续。

相关问题