我正在尝试配置系统测试以使用硒中的无头铬。我有以下水豚配置:
# spec/support/capybara.rb
Capybara.server = :puma, { Silent: true }
RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end
config.before(:each, type: :system, js: true) do
driven_by :selenium_chrome_headless, screen_size: [1400, 1400]
end
end
和以下 Dockerfile(没有数据库,因为我为此使用主机):
FROM ruby:2.5.1
RUN apt-get update
RUN apt-get install -y wget git
# Node
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash -
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update
# Essentials
RUN apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn unzip
# Chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list
RUN apt-get update && apt-get -y install google-chrome-stable
# Chromedriver
RUN wget -q https://chromedriver.storage.googleapis.com/2.39/chromedriver_linux64.zip
RUN unzip chromedriver_linux64.zip -d /usr/local/bin
RUN rm -f chromedriver_linux64.zip
RUN apt-get clean
我在网上关注了几个关于如何设置 headless_chrome 测试的来源,但是它们都恢复到上述配置。尝试运行水豚它显示以下错误,我似乎无法成功调试它。
Selenium::WebDriver::Error::UnknownError:
unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.39.562737 (dba483cee6a5f15e2e2d73df16968ab10b38a2bf),platform=Linux 4.16.11-1-ARCH x86_64)
上面的docker文件包含最新的chrome和chromedriver版本,分别为67和2.39。我也尝试过旧版本,但也出现相同的上述错误,例如 66 和 2.38,符合版本支持http://chromedriver.chromium.org/downloads http://chromedriver.chromium.org/downloads.
以前有人见过这个错误吗?