运行Rails测试时无法在WSL中找到Chrome二进制文件

时间:2019-06-14 07:57:25

标签: ruby-on-rails selenium-chromedriver windows-subsystem-for-linux

我正在尝试在Linux的Windows子系统中为我的Rails应用程序运行集成测试。我已经从官方网站下载了Windows的chromedriver文件,并将其放置在Documents/bin文件夹中。我已将以下文件添加到同一文件夹中,并将其另存为chromedriver

#!/bin/sh
chromedriver.exe "$@"

因此,目前Documents/bin文件夹包含以下两个文件:chromedriver.exechromedriver。我已将此文件夹添加到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二进制文件的路径?

2 个答案:

答案 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环境变量中