gpt4 book ai didi

java - 如何以最少的等待时间加速 Java Selenium Script

转载 作者:行者123 更新时间:2023-12-02 14:54:07 24 4
gpt4 key购买 nike

我目前正在开发一个 java selenium 项目,它通常是一个小脚本,我必须在其中检查每个元素是否存在,并基于此触发一些操作,但我们主要关心的是完成脚本的持续时间.

基本上,我在我的脚本中使用了下面的每一个并运行了测试,尽管在每种情况下脚本都在运行,但我发现脚本执行持续时间的速度改进很小。我正在使用 wait

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

和它一起

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

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

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

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

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

最佳答案

您的方法存在一些问题。

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

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

  3. 主要问题是您在检查某些内容不存在时启用了隐式等待...尤其是 10 秒的等待。这意味着每次检查一个元素时,Selenium 都会等待 10 秒,即使它预计该元素不存在也是如此。

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

旁注... Selenium 贡献者声明不应使用隐式等待。使用 WebDriverWait 代替,但那是另一个讨论。

关于java - 如何以最少的等待时间加速 Java Selenium Script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53779112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com