使用Capybara+Poltergeist时PhantomJS可执行文件匹配失败求助
解决方案
1. 验证手动安装的 PhantomJS 有效性
先确认你手动安装的 1.9.8 版本是否能正常运行:
/usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs --version
如果能正常输出版本号,说明该可执行文件有效,问题出在 phantomjs gem 自动指向的 2.1.1 版本文件损坏或无效。
2. 直接指定 PhantomJS 路径
修改 Capybara 驱动注册代码,跳过 Phantomjs.path,直接使用手动安装的路径:
Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, { js_errors: false, timeout: 120, # 替换为你手动安装的 PhantomJS 绝对路径 phantomjs: '/usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs', phantomjs_options: [ '--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=any' ]} ) end
3. 清理冗余软链接与无效版本
删除指向 2.1.1 版本的软链接,避免路径冲突:
sudo rm /usr/local/bin/phantomjs sudo rm /usr/bin/phantomjs sudo rm /usr/local/share/phantomjs # 重新创建指向 1.9.8 版本的正确软链接 sudo ln -sf /usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs /usr/local/bin
运行 phantomjs --version 确认系统能定位到正确版本。
4. 移除 phantomjs gem(可选)
若手动安装的版本稳定可用,可直接移除 phantomjs gem,避免自动下载的版本干扰:
gem uninstall phantomjs
修改 Gemfile,删除 gem 'phantomjs', :require => 'phantomjs/poltergeist' 行,执行 bundle install。
内容的提问来源于stack exchange,提问作者Nitesh Choudhary
相关产品推荐
相关产品推荐

