You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome版本高于115时Selenium findElements()返回元素数为0的问题

Chrome 115+版本findElements返回元素数量异常排查思路
  • 验证定位器兼容性

    • 直接在Chrome 121开发者工具的Console面板中执行XPath表达式$x("some_locator"),确认是否能找到目标元素,排查定位器是否因Chrome DOM结构变化失效。
    • 替换为ID、CSS选择器等其他定位方式,排除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");
      

内容的提问来源于stack exchange,提问作者tedtrain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 01:54:58