Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Not able to run selenium with firefox, Capybara and Docker in headless mode

I'm trying to run tests with Selenium and Firefox with Capybara. When I run a test, it does a POST request to "http://127.0.0.1:4444:/sessions", it starts a server with geckodriver and I have a timeout error. I tried to do it manually by doing this command :

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

It fails and I have this message : Error: GDK_BACKEND does not match available displays. When I lauch xvfb-run geckodriver, it works but I have to find a way to launch geckodriver in headless mode with RSpec.

I'm on a docker env, so I don't have a xserver installed.

What can I do?

Edit

I have :

Firefox 52.4
Geckodriver 0.19.0
Capybara 2.13
Selenium-webdriver 3.6

Here is my configuration of selenium :

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

Everything is running on docker.

like image 652
Dougui Avatar asked Nov 18 '25 07:11

Dougui


1 Answers

Now that you have Firefox 56 (which is supported by geckodriver 0.19 and also supports headless mode, which Firefox 52 did not) you need to configure your driver to enable headless mode. Something along the lines of

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

should do.

like image 172
Thomas Walpole Avatar answered Nov 21 '25 00:11

Thomas Walpole



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!