我试图配置系统测试以与selenium中的无头铬一起使用。我有以下水豚配置:
# 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上的版本支持。
有没有人看过这个错误?
似乎水豚的默认selenium_chrome_headless设置不足以在docker容器中运行。我已通过将spec / support /
capybara.rb设置更改为以下内容来解决了该问题:
# spec/support/capybara.rb
# Setup chrome headless driver
Capybara.server = :puma, { Silent: true }
Capybara.register_driver :chrome_headless do |app|
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--window-size=1400,1400')
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.javascript_driver = :chrome_headless
# Setup rspec
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 :chrome_headless
end
end
尤其不要忘记“ –disable-dev-shm-
usage”,因为它解决了docker中有限的资源问题,如https://github.com/GoogleChrome/puppeteer/issues/1834中所述
编辑: 我没有对上述Dockerfile进行任何更改
以前有人见过这个错误吗?
我有以下代码 它返回错误: 如果我使用运行,我不会收到任何错误。不幸的是,我真的不能在无头状态下运行我想运行的东西。有人有什么想法吗?
iam运行一个硒脚本,并继续得到上述错误。这是代码: 所以代码中的注释行对我不起作用。当我添加这一行时,我总是得到这个错误: 并且代码在没有添加上述代码行的情况下也能正常工作。 以下是关于该错误的更多信息: 系统信息: 视窗 7 SP-1 64 位 Chrome信息:版本71.0.3578.98(官方版本)(64位) Java 版本: 10.0.1 请帮我做这件事。
问题内容: 我正在尝试使用URL启动chrome,浏览器启动,此后它什么也不做。 1分钟后,我看到以下错误: 我的配置: Chrome:66 Chrome浏览器:2.39.56 PS 在Firefox中一切正常 问题答案: 更新: 我可以解决问题,现在可以使用所需的网址访问Chrome。 尝试提供的解决方案的结果: 我尝试了上面提供的所有设置,但无法解决问题 有关问题的说明: 根据我的观察,当ch
null p.s在Firefox中一切正常
当我同时使用参数和时。硒升高异常。如果只使用其中的一个,那么一切都可以按需工作。 我试着交换论点,去掉其中一些。指定了chromedriver的完整路径。exe。这些都没有帮助。 Chromeoptions.add_argument("--disable-dev-shm使用")没有帮助我。