Невозможно найти двоичный файл chrome в WSL при выполнении тестов Rails - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь запустить интеграционные тесты для моего приложения Rails в подсистеме Windows для Linux. Я скачал файл chromedriver для Windows с официального сайта и поместил его в папку Documents/bin. Я добавил следующий файл в ту же папку и сохранил его как chromedriver:

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

Итак, в настоящее время папка Documents/bin имеет следующие два файла: chromedriver.exe и chromedriver. Я добавил эту папку в PATH в Windows. Когда я набираю chromedriver -v в терминале Ubuntu в Windows, я получаю следующий вывод:

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.

версия Chrome в Windows: Version 75.0.3770.90 (Official Build) (64-bit)

Таким образом, Linux может найти хром-драйвер, но не рельсы. Как я могу исправить эту ошибку? Должен ли я запустить sudo apt-get install chromium chrome-driver? Или есть другой способ сообщить рельсам путь к двоичному файлу chromedriver?

1 Ответ

0 голосов
/ 14 июня 2019

Не знаю, поможет ли это вам, но пока никто не ответил. Я не знаю, зачем вам нужен chromedriver, если рельсы знают, как с ним работать, если не установлен chromedriver. Для интеграционных тестов я использую капибару и безголовый хром. Так что для настройки вам нужно установить google-chrome и 3 гема: '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

Надеюсь, это как-то вам поможет

...