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

升级Chromedriver 120至121后系统测试大量随机失败,求解决方案

解决ChromeDriver 121升级后Capybara/Selenium随机测试失败问题

核心原因

ChromeDriver 121对元素可见性判断、页面加载状态的检测逻辑做了调整,叠加Github Actions环境的资源限制,导致原本稳定的测试出现随机失败。

已验证的解决方案

1. 升级Capybara和Selenium依赖

多数开发者通过更新到兼容版本解决了大部分问题:

  • 将capybara升级至3.39.2+(该版本修复了Chrome 121相关的可见性检测bug)
  • 将selenium-webdriver升级至4.17.0+(适配ChromeDriver 121的协议变更)

执行命令更新依赖:

bundle update capybara selenium-webdriver

2. 调整Capybara等待策略

针对元素可见性误判问题,修改默认配置以适配CI环境延迟:
在test/application_system_test_case.rb中添加:

Capybara.default_max_wait_time = 10 # 提升等待时长,默认通常为2-3秒
Capybara.disable_animation = true # 禁用页面动画,避免元素状态不稳定

同时,优化文本可见性检测的写法,避免误判:

# 替换原有写法
expect(page).to have_text("目标文本")
# 改为精准判断可见文本
expect(page).to have_content("目标文本", visible: :visible)

3. 修复StaleElementReferenceError

这类错误源于元素操作前页面发生重渲染,解决方式:

  • 避免复用已获取的元素对象,每次操作前重新查找
  • 用find方法结合等待,确保元素处于稳定状态:
# 替换原有写法
element = find(".target-element")
element.click
# 改为
find(".target-element", wait: 5).click

4. 优化Github Actions环境配置

在CI workflow中添加Chrome启动参数,降低资源占用并提升稳定性:

jobs:
  test:
    runs-on: ubuntu-22.04
    steps:
      - name: Setup Chrome
        uses: browser-actions/setup-chrome@v1
        with:
          chrome-version: 121
      - name: Run system tests
        env:
          CHROME_OPTS: "--headless=new --disable-gpu --no-sandbox --disable-dev-shm-usage --window-size=1920,1080"
        run: bundle exec rails test:system

5. 回退ChromeDriver版本(临时方案)

若上述方案暂无法生效,可在CI中强制指定ChromeDriver 120版本:

- name: Install specific ChromeDriver
  run: |
    wget https://chromedriver.storage.googleapis.com/120.0.6099.109/chromedriver_linux64.zip
    unzip chromedriver_linux64.zip
    sudo mv chromedriver /usr/local/bin/
    sudo chmod +x /usr/local/bin/chromedriver

总结

优先升级依赖版本,配合调整Capybara配置和CI环境参数,基本可解决ChromeDriver 121带来的随机测试失败问题。若仍有个别测试不稳定,建议针对具体用例添加更明确的等待逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:10:38