Chrome升级至78后指定ChromeDriver版本仍无法运行测试求助
针对你遇到的Selenium::WebDriver::Error::SessionNotCreatedError错误,这里有几个可行的排查和解决思路:
检查本地ChromeDriver的实际运行版本
有时候手动指定版本后,系统实际调用的还是旧版本的驱动。在终端运行以下命令查看当前ChromeDriver版本:chromedriver --version如果输出的不是你指定的76.x版本,说明驱动没有正确切换,需要进一步处理。
确保版本配置代码的执行顺序
要保证Webdrivers::Chromedriver.required_version = '76.0.3809.68'这行代码在初始化Chrome驱动之前执行,也就是要放在Selenium::WebDriver.for :chrome之前。如果顺序颠倒,配置不会生效,依然会使用旧版本驱动。清除webdrivers gem的缓存
webdrivers gem会缓存下载的驱动文件,缓存中的旧版本可能导致问题。找到缓存目录(默认在~/.webdrivers/),删除其中的chromedriver文件,然后重新运行测试,让gem重新下载指定版本的驱动。排查系统环境变量干扰
检查是否存在CHROMEDRIVER_PATH环境变量,这个变量会直接指定ChromeDriver的路径,覆盖webdrivers gem的配置。在终端执行以下命令查看:# Linux/macOS echo $CHROMEDRIVER_PATH # Windows echo %CHROMEDRIVER_PATH%如果输出了旧驱动的路径,需要删除这个环境变量,或者更新为指定版本驱动的路径。
升级webdrivers gem到最新版本
旧版本的webdrivers gem可能存在版本匹配逻辑的bug,无法正确识别或下载对应Chrome版本的驱动。运行以下命令升级gem:bundle update webdrivers升级后可以尝试移除手动指定版本的代码,让gem自动匹配Chrome 78对应的ChromeDriver版本,这通常是更可靠的方式。
对比本地与Travis环境的差异
Travis上测试正常,说明Travis的环境中Chrome和ChromeDriver版本是匹配的。可以查看Travis的构建日志,确认它使用的Chrome版本、ChromeDriver版本以及webdrivers gem版本,然后将本地环境调整为一致的配置。
内容的提问来源于stack exchange,提问作者cercxtrova

