Chrome版本高于115时Selenium findElements()返回元素数为0的问题
Chrome 115+版本findElements返回元素数量异常排查思路
验证定位器兼容性
- 直接在Chrome 121开发者工具的Console面板中执行XPath表达式
$x("some_locator"),确认是否能找到目标元素,排查定位器是否因Chrome DOM结构变化失效。 - 替换为ID、CSS选择器等其他定位方式,排除XPath语法或依赖特性在新版中不兼容的问题。
- 直接在Chrome 121开发者工具的Console面板中执行XPath表达式
检查页面加载与等待策略
- 新增显式等待逻辑,确保元素渲染完成后再执行查找:
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("some_locator"))); List<WebElement> c = driver.findElements(By.xpath("some_locator")); - 查看Chrome 121的Network面板,确认页面资源(尤其是包含目标元素的组件)是否加载完成,无失败或延迟请求。
- 新增显式等待逻辑,确保元素渲染完成后再执行查找:
排查Chrome与Selenium版本兼容性
- 尝试升级Selenium到最新稳定版,确认是否是旧版Selenium对Chrome 121的支持存在缺陷。
- 再次核对ChromeDriver版本与Chrome浏览器版本是否完全匹配(当前Chrome 121对应ChromeDriver 121.x系列),避免版本不匹配导致的通信问题。
检查Chrome特性与设置变化
- 查阅Chrome 115至121的版本更新日志,重点关注Blink引擎、DOM解析相关的特性变更,确认是否有影响元素定位的改动。
- 用无痕模式或禁用扩展运行测试,排除浏览器扩展、缓存对页面渲染的干扰:
options.addArguments("--incognito"); options.addArguments("--disable-extensions");
对比新旧版本DOM结构
- 在Chrome 115和121中分别打开目标页面,通过开发者工具对比目标元素的标签、属性、父节点层级,确认是否存在动态元素生成时机或结构的变化。
启用详细日志定位问题
- 开启ChromeDriver的详细日志,查看驱动与浏览器的通信细节,确认元素查找请求的返回结果:
System.setProperty("webdriver.chrome.logfile", "chromedriver.log"); System.setProperty("webdriver.chrome.verboseLogging", "true");
- 开启ChromeDriver的详细日志,查看驱动与浏览器的通信细节,确认元素查找请求的返回结果:
内容的提问来源于stack exchange,提问作者tedtrain
相关产品推荐
相关产品推荐

