返回

Chrome版本高于115时,Selenium findElements()返回大小为0,该如何解决?

java

Chrome 版本高于 115 时,Selenium findElements() 返回大小为 0

问题概述

最近,许多开发者在使用 Selenium 进行自动化测试时遇到了一个令人困惑的问题:当 Chrome 浏览器版本升级到 115 以上后,findElements() 方法开始返回大小为 0 的列表,即使页面上存在匹配的元素。

原因分析

经过一番调查,我们发现此问题是由 Chrome 浏览器的更新引起的。在 Chrome 版本 115 中,findElements() 方法的实现发生了变化。修改后,该方法现在将找不到的元素视为大小为 0 的列表,而不是空列表。

解决方案

要解决此问题,有两种方法:

  1. 将 Chrome 浏览器版本降级到 115 或更低版本。 这将恢复 findElements() 方法的旧行为。
  2. 使用 findElement() 方法代替 findElements() 方法。 findElement() 方法在 Chrome 版本高于 115 时仍然可以正常工作。

建议

我们强烈建议使用 findElement() 方法,因为它是 Chrome 版本高于 115 时唯一可靠的元素查找方法。

示例代码

以下代码示例演示了如何使用 findElement() 方法查找元素:

ChromeOptions options = new ChromeOptions();
options.setBrowserVersion("121");
WebDriver driver = new ChromeDriver(options);  
WebElement element = driver.findElement(By.xpath("some_locator"));
System.out.println(element); // Prints the element

结论

如果您在使用 Selenium 时遇到 findElements() 方法返回大小为 0 的问题,请尝试降级 Chrome 浏览器版本或使用 findElement() 方法。

常见问题解答

1. 为什么会出现这个问题?
答:此问题是由 Chrome 浏览器的更新引起的,该更新改变了 findElements() 方法的实现。

2. 如何解决这个问题?
答:您可以将 Chrome 浏览器版本降级到 115 或更低版本,或者使用 findElement() 方法。

3. 我应该使用哪种方法?
答:我们建议使用 findElement() 方法,因为它在 Chrome 版本高于 115 时仍然可以正常工作。

4. 这个问题会影响其他浏览器吗?
答:不,此问题仅影响 Chrome 浏览器。

5. 是否有其他解决方法?
答:没有其他已知的解决方法,但您可以尝试使用其他元素查找方法,例如 findElementsByXPath()