更新最新版Chrome后出现undefined method `execute_script'报错如何解决
问题原因
该报错是Selenium 4.0.x版本与Chrome 96+内置的Chrome DevTools Protocol(CDP)返回格式不兼容导致的,Selenium 4.0.x版本未适配Chrome 96调整后的CDP返回结构,错误将驱动实例返回为Hash对象,因此调用execute_script方法时触发Hash类不存在该方法的异常。
解决方案
方案1(推荐):升级selenium-webdriver到兼容版本
Selenium官方在4.1.0版本已修复该兼容问题,直接修改Gemfile中selenium-webdriver的版本约束即可:
gem "selenium-webdriver", "~> 4.1.0"
修改完成后执行命令更新依赖:bundle update selenium-webdriver
方案2:临时补丁适配(适用于暂时无法升级Selenium版本的场景)
在测试框架启动配置文件(如Rails项目的spec_helper.rb/rails_helper.rb,或非Rails项目的测试初始化脚本)中加入以下适配代码:
# 修复Selenium 4.0.x 与 Chrome 96+ 的CDP返回兼容问题 Capybara::Selenium::Driver.class_eval do def bridge @bridge ||= begin origin_bridge = super origin_bridge.is_a?(Hash) ? Selenium::WebDriver::Driver.new(options[:browser], options).bridge : origin_bridge end end end
添加后重启测试服务即可生效。
方案3:保留Chrome 95版本(不推荐)
若暂时不做任何代码修改,可继续使用Chrome 95版本运行测试,但该版本存在已知安全漏洞,仅建议作为临时过渡方案。
内容的提问来源于stack exchange,提问作者ML022
相关产品推荐
相关产品推荐

