Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 无法在firefox、Capybara和Docker的无头模式下运行selenium_Ruby_Selenium_Firefox_Rspec_Capybara - Fatal编程技术网

Ruby 无法在firefox、Capybara和Docker的无头模式下运行selenium

Ruby 无法在firefox、Capybara和Docker的无头模式下运行selenium,ruby,selenium,firefox,rspec,capybara,Ruby,Selenium,Firefox,Rspec,Capybara,我正在尝试使用Selenium和Firefox以及Capybara运行测试。当我运行测试时,它对“”执行POST请求,它使用geckodriver启动服务器,我有一个超时错误。我尝试通过执行以下命令手动执行此操作: curl -d '{"desiredCapabilities": {"browserName": "firefox", "version": "", "platform": "ANY", "javascriptEnabled": 1, "cssSelectorsEnabled": 1

我正在尝试使用Selenium和Firefox以及Capybara运行测试。当我运行测试时,它对“”执行POST请求,它使用
geckodriver
启动服务器,我有一个超时错误。我尝试通过执行以下命令手动执行此操作:

curl -d '{"desiredCapabilities": {"browserName": "firefox", "version": "", "platform": "ANY", "javascriptEnabled": 1, "cssSelectorsEnabled": 1, "takesScreenshot": 1, "nativeEvents": 0, "rotatable": 0, "unexpectedAlertBehaviour": "ignore", "moz:firefoxOptions": {"args": ["-headless"]}}, "capabilities": {"firstMatch": [{"browserName": "firefox", "moz:firefoxOptions": {}}]}}' http://127.0.0.1:4444/session
它失败了,我收到了以下消息:
错误:GDK\U后端与可用显示不匹配
。当我启动
xvfb运行geckodriver
时,它可以工作,但我必须找到一种方法,使用RSpec以无头模式启动geckodriver

我在docker环境上,所以没有安装xserver

我能做什么

编辑 我有:

Firefox 52.4
Geckodriver 0.19.0
Capybara 2.13
Selenium-webdriver 3.6
以下是我对selenium的配置:

Capybara.register_driver :selenium do |app|
  require 'selenium/webdriver'
  Capybara::Selenium::Driver.new(app, :browser => :firefox)
end

一切都在docker上运行。

现在您有了Firefox 56(geckodriver 0.19支持它,也支持headless模式,Firefox 52没有),您需要配置驱动程序以启用headless模式。类似于

Capybara.register_driver :selenium do |app|
  browser_options = ::Selenium::WebDriver::Firefox::Options.new()
  browser_options.args << '--headless'

  Capybara::Selenium::Driver.new(
    app,
    browser: :firefox,
    options: browser_options
  )
end
Capybara.register_驱动程序:selenium do|app|
浏览器\选项=::Selenium::WebDriver::Firefox::options.new()

browser_options.args您如何配置您的Capybara驱动程序,您使用的是什么版本的Capybara/Selenium/Firefox/geckodriver?一切都在docker环境(水豚、geckodriver、浏览器等)上运行,还是仅仅在浏览器上运行?@ThomasWalpole我添加了一些信息geckodriver 0.19只支持FF 55+-升级Firefox@ThomasWalpole我对firefox 56也有同样的看法