+-
如何以最短的等待时间加速Java Selenium Script
我目前正在开发一个 java selenium项目,它通常是一个小脚本,我必须检查每个元素是否存在并基于某些操作被触发但我们主要关注的是完成脚本的持续时间.

基本上我在我的脚本中使用了下面的每一个并运行测试,尽管在每种情况下脚本都在运行,但我发现脚本执行持续时间的速度提升很少.我正在使用等待

driver.manage().timeouts().implicitlyWait(10000,TimeUnit.MILLISECONDS);

和它一起

!(driver.findElement(By.xpath("Element Xpath)).isEmpty()) 

要么

driver.findElements(By.xpath("Element Xpath)).size()>0

我知道我可以选择CSS选择器,但在我的情况下,由于DOM Tree结构,这是不可行的.
什么可以用来代替

driver.findElements(By.xpath("Element Xpath)).size()>0

这是为了检查元素是否存在,并且基于此我必须触发多个其他操作.

最佳答案
您的方法存在一些问题.

> .implicitlyWait()实际上并没有等待.它设置驱动程序实例的超时,因此您只需将其设置一次,而不是每次要等待时调用它.
> driver.findElement(…).isEmpty()将无法编译.也许你的意思是.findElements()?无论哪种方式,.isEmpty()vs .size()> 0的速度差异可以忽略不计.
>主要问题是,在检查不存在的内容时,您启用了隐式等待…尤其是等待10秒.这意味着每次检查一个元素时,Selenium会等待10秒,即使它不希望它存在.

通过关闭隐式等待(将其设置为0)然后检查您希望不存在的元素然后将其重新打开,可以更好地服务.这将是你期望不存在的10s x#存在检查.根据您执行的存在检查的数量,这可能会增加很多时间.这样做的一个缺点是,如果你有一个带有后台进程的复杂页面,你需要特定的等待页面(或页面的一部分)完成加载,然后检查是否存在隐式等待的元素.

旁注…… Selenium贡献者已经声明不应该使用隐式等待期.请改用WebDriverWait,但这是另一个讨论.

点击查看更多相关文章

转载注明原文:如何以最短的等待时间加速Java Selenium Script - 乐贴网