我有一个使用
的e2e测试的回购我想要一个docker容器:
<integration-test-repo-url>
ruby
,bundler
,chromedriver
,cucumber
)integration-test-repo
并运行./runtests.sh
(使用bundle install
安装必备宝石,然后运行bundle exec cucumber
)这是我到目前为止(使用this泊坞窗图片):
FROM 2glab/ruby-chrome-driver
RUN \
apt-get update && \
apt-get install -qy bundler && \
apt-get install -qy cucumber
RUN useradd -d /home/<user> -ms /bin/bash -g root -G sudo -p <user> <password>
USER <user>
WORKDIR /home/<user>
RUN cd && git clone <my_repo_url>
WORKDIR <my_repo_folder>
RUN bundle install && bundle exec cucumber
不幸的是,这会导致错误:
unknown error: Chrome failed to start: crashed
(Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Linux 4.9.87-linuxkit-aufs x86_64) (Selenium::WebDriver::Error::UnknownError
我该如何解决这个问题?铬缺少什么? Chromedriver遗失了什么吗?从我所看到的,chrome和chromedriver的依赖关系应该在docker镜像中得到解决(参见here)。
答案 0 :(得分:0)
解决方案是配置自定义Chrome驱动程序,而不是使用chromedriver + capybara附带的selenium_chrome_headless
:
require 'selenium-webdriver'
Capybara.register_driver :custom_chrome_headless do |app|
browser_options = ::Selenium::WebDriver::Chrome::Options.new
browser_options.args << '--headless'
browser_options.args << '--no-sandbox'
browser_options.args << '--disable-gpu'
browser_options.args << '--window-size=1920,1080'
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
options: browser_options
)
end
Capybara.configure do |config|
config.default_driver = :custom_chrome_headless
# Other irrelevant config stuff...
end
出于某种原因,这可行,但selenium_chrome_headless
没有。
答案 1 :(得分:0)
我曾经遇到过同样的问题,并通过添加>options.add_argument('--disable-dev-shm-usage')>
来解决。尝试将标志添加到选项。