如何以最少的等待时间加速Java Selenium脚本
我目前正在研究Java硒项目,该项目通常是一个小脚本,在该脚本中,我必须检查每个元素是否存在,并基于该操作触发了一些操作,但我们主要关心的是完成脚本的持续时间。
基本上,我在脚本中使用了下面的每个脚本并进行了测试,尽管在每种情况下脚本都在运行,但是我发现脚本执行持续时间的速度提高很少。
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
速度差异都可以忽略不计。主要问题是在检查不存在的内容时启用了隐式等待…尤其是10s等待。这意味着,每次检查元素时,Selenium都会等待10秒,即使它期望它不存在。
关闭隐式等待(将其设置为0),然后对您不希望出现的元素进行存在性检查,然后再将其重新打开,将为您提供更好的服务。那将是10s
x您希望不存在的存在检查数。根据您执行的存在检查次数,这可能会花费大量时间。不利的一面是,如果您有一个带有后台进程的复杂页面,则需要先等待页面(或页面的一部分)完成加载,然后再检查是否隐式等待关闭元素的存在。
旁注…硒贡献者指出,不应使用隐式等待。使用WebDriverWait
代替,但这是一个完整的其他讨论。
以上是 如何以最少的等待时间加速Java Selenium脚本 的全部内容, 来源链接: utcz.com/qa/398706.html