已添加Chromedriver路径,Ruby中Selenium/Watir仍提示找不到驱动
别担心,我之前也碰到过完全一样的情况!明明命令行能直接调用chromedriver,但Ruby里就是报错找不到,大概率是这几个原因导致的:
Ruby运行环境的PATH和命令行不一致
命令行里的PATH配置不一定会被Ruby进程继承,你可以先在pry里执行puts ENV['PATH'],看看输出的路径列表里有没有chromedriver所在的目录。如果没有,要么调整启动Ruby时的环境变量,要么直接在代码里指定路径。手动指定chromedriver路径(最直接的解决办法)
绕开PATH的问题,初始化浏览器时直接指定driver的绝对路径:browser = Watir::Browser.new(:chrome, driver_path: '/path/to/your/chromedriver')把
/path/to/your/chromedriver换成你实际的chromedriver文件路径就行,比如/usr/local/bin/chromedriver或者~/bin/chromedriver。检查chromedriver和Chrome版本是否匹配
有时候版本不兼容也会触发类似“找不到”的错误(虽然报错信息写的是路径问题,但实际是版本不匹配导致无法启动)。你可以分别在命令行执行chromedriver --version和google-chrome --version,确保两者的大版本号一致(比如Chrome 114对应chromedriver 114.x.x.x),版本差太多的话就下载对应版本的chromedriver。确认chromedriver有可执行权限
如果chromedriver没有执行权限,就算在PATH里Ruby也没法运行它。执行chmod +x /path/to/your/chromedriver给它加上可执行权限试试。
内容的提问来源于stack exchange,提问作者user7386116

