在docker容器中运行黄瓜和水豚
我有一个使用e2e测试的回购协议在docker容器中运行黄瓜和水豚,docker,cucumber,capybara,selenium-chromedriver,Docker,Cucumber,Capybara,Selenium Chromedriver,我有一个使用e2e测试的回购协议 Cucumber(ruby)用于编写规范和步骤定义 水豚作为浏览和执行用户交互的驱动程序 镀铬器 我想要一个docker容器: 从 安装所有必要的必备组件(ruby,bundler,chromedriver,cucumber) 进入集成测试repo并运行/runtests.sh(它使用bundle install安装必备的gems,然后运行bundle exec) 这是我到目前为止得到的(使用docker图像): 来自2glab/ruby chrome驱
- Cucumber(ruby)用于编写规范和步骤定义
- 水豚作为浏览和执行用户交互的驱动程序
- 镀铬器
- 从
- 安装所有必要的必备组件(
,ruby
,bundler
,chromedriver
)cucumber
- 进入
并运行集成测试repo
(它使用/runtests.sh
安装必备的gems,然后运行bundle install
)bundle exec
跑\
apt获取更新&&\
apt get安装-qy捆绑机和\
apt-get-install-qy cucumber
运行useradd-d/home/-ms/bin/bash-groot-gsudo-p
使用者
WORKDIR/家庭/
运行cd和git克隆(&G)
WORKDIR
运行bundle安装和bundle exec
不幸的是,这会导致一个错误:
未知错误:Chrome无法启动:崩溃
(驱动程序信息:chromedriver=2.37.544315(730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),平台=Linux 4.9.87-linuxkit-aufs x86_64)(Selenium::WebDriver::Error::UnknownError
我该如何解决这个问题?chrome缺少什么吗?Chromedriver缺少什么吗?据我所见,chrome和Chromedriver的依赖关系应该在docker映像中解决(请参阅).解决方案是配置定制的chrome驱动程序,而不是使用chromedriver+capybara附带的
selenium\u chrome\u 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 webdriver”
Capybara.register_驱动程序:定制_chrome_headless do|app|
浏览器\选项=::Selenium::WebDriver::Chrome::options.new
browser_options.args我也遇到了同样的问题,通过添加>options.add_参数('--disable dev shm usage')解决了这个问题>
。尝试将标志添加到选项中。您是否已将Capybara配置为在无头模式下运行Chrome?另请注意,最新的chromedriver为2.39-您可能需要根据具体设置在docker中配置额外的Chrome选项-请参阅@ThomasWalpole:我确实使用了Seleniu Chrome\u headless
驱动程序运行(这在docker中显然不起作用。我明天会更新这个问题和/或链接为副本。我正在尝试,但仍然会导致chrome崩溃。你把它放在spec/rails\u helper.rb中吗?为什么写tmp
可以解决这个问题?好吧,这是chrome开始使用太多内存时的修复方法。为什么会这样只需要启动chrome?
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