如何以最少的等待时间加速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

这个检查元素是否存在,并基于此我必须触发多个其他动作。

回答:

您的方法存在一些问题。

  1. .implicitlyWait()实际上并没有等待。它为驱动程序实例设置超时,因此您只需要设置一次,而不必在每次等待时调用它。

  2. driver.findElement(...).isEmpty()不会编译。也许是你的意思.findElements()?无论哪种方式,.isEmpty()vs的.size() > 0速度差异都可以忽略不计。

  3. 主要问题是在检查不存在的内容时启用了隐式等待…尤其是10s等待。这意味着,每次检查元素时,Selenium都会等待10秒,即使它期望它不存在。

关闭隐式等待(将其设置为0),然后对您不希望出现的元素进行存在性检查,然后再将其重新打开,将为您提供更好的服务。那将是10s

x您希望不存在的存在检查数。根据您执行的存在检查次数,这可能会花费大量时间。不利的一面是,如果您有一个带有后台进程的复杂页面,则需要先等待页面(或页面的一部分)完成加载,然后再检查是否隐式等待关闭元素的存在。

旁注…硒贡献者指出,不应使用隐式等待。使用WebDriverWait代替,但这是一个完整的其他讨论。

以上是 如何以最少的等待时间加速Java Selenium脚本 的全部内容, 来源链接: utcz.com/qa/398706.html

回到顶部