构建服务器Chrome 110不兼容selenium-devtools 0.109的解决办法
临时解决办法
针对Chrome 110与selenium-devtools 0.109版本不兼容导致的LoadError,这里有几个可行的临时方案:
方案1:强制指定使用已有的DevTools版本
Selenium的DevTools协议通常具备向后兼容性,你可以强制让程序使用v109版本的DevTools适配Chrome 110。在初始化WebDriver之前添加以下代码:
# 强制加载v109版本的DevTools,忽略Chrome实际版本 Selenium::Devtools.load_version(109)
如果你的代码是通过driver.devtools触发加载,也可以在调用前手动指定版本:
# 替换原有的driver.devtools调用逻辑 devtools = Selenium::Devtools.new(109, driver.send(:bridge))
方案2:复制已有版本目录做临时适配
在构建服务器的bundler缓存目录中,将v109的目录复制为v110,让Zeitwerk能找到对应的文件:
# 进入selenium-devtools的devtools目录 cd /home/rof/cache/bundler/ruby/3.1.0/gems/selenium-devtools-0.109.0/lib/selenium/devtools/ # 复制v109目录为v110 cp -r v109 v110
可以把这个命令添加到构建前置脚本中,实现每次构建前自动执行。
方案3:临时禁用DevTools相关功能
如果你的测试流程并非必须依赖网络拦截(network interception)或其他DevTools功能,可以暂时注释掉触发devtools加载的代码,比如./spec/support/interceptor.rb里的start_intercepting方法相关逻辑,避免触发LoadError。
内容的提问来源于stack exchange,提问作者rogerkk
相关产品推荐
相关产品推荐

