我正在尝试在Linux的Windows子系统中为我的Rails应用程序运行集成测试。我已经从官方网站下载了Windows的chromedriver
文件,并将其放置在Documents/bin
文件夹中。我已将以下文件添加到同一文件夹中,并将其另存为chromedriver
:
#!/bin/sh
chromedriver.exe "$@"
因此,目前Documents/bin
文件夹包含以下两个文件:chromedriver.exe
和chromedriver
。我已将此文件夹添加到Windows中的PATH
中。
当我在Windows的Ubuntu终端中输入chromedriver -v
时,得到以下输出:
ChromeDriver 75.0.3770.90 (a6dcaf7e3ec6f70a194cc25e8149475c6590e025-refs/branch-heads/3770@{#1003})
但是当我执行任何Rails集成测试时,出现以下错误:
sh: 1: ["/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/opt/google/chrome"]: not found
sh: 1: ["/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/opt/google/chrome"]: not found
sh: 1: ["/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/opt/google/chrome"]: not found
Webdrivers::VersionError: Failed to find Chrome binary or its version.
Windows中的 chrome版本:Version 75.0.3770.90 (Official Build) (64-bit)
因此linux能够找到chromedriver但找不到rails。如何纠正该错误?我应该运行sudo apt-get install chromium chrome-driver
吗?还是有另一种方法可以使Rails知道chromedriver二进制文件的路径?
答案 0 :(得分:0)
我不知道它是否对您有帮助,但是还没有人回答。我不知道如果Rails知道如何在不安装chromedriver的情况下处理它,为什么需要安装chromedriver。对于集成测试,我使用水豚和无头铬。因此,对于安装程序,您需要安装google-chrome和3个gem:'capybara','selenium-webdriver'和'webdrivers'(以前称为chromedriver-helper'。之后,只需将驱动程序设置为:
require "selenium/webdriver"
require 'webdrivers/chromedriver'
require "capybara"
Webdrivers::Chromedriver.required_version = "74.0.3729.6" # this will set proper chromedriver version (btw I use Google Chrome 74.0.3729.157)
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w(no-sandbox headless disable-gpu window-size=1280,1024) )
Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities)
end
Capybara.default_driver = Capybara.javascript_driver = :headless_chrome
我希望以某种方式对您有帮助
答案 1 :(得分:0)
您需要将chrome.exe的路径添加到Ubuntu中的PATH环境变量中