无法在无头模式下 运行 selenium 与 firefox、Capybara 和 Docker
Not able to run selenium with firefox, Capybara and Docker in headless mode
我正在尝试 运行 使用 Selenium 和 Firefox 与 Capybara 进行测试。当我 运行 测试时,它向“http://127.0.0.1:4444:/sessions”发出 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
它失败了,我收到这条消息:Error: GDK_BACKEND does not match available displays
。当我启动 xvfb-run 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
应该做。
我正在尝试 运行 使用 Selenium 和 Firefox 与 Capybara 进行测试。当我 运行 测试时,它向“http://127.0.0.1:4444:/sessions”发出 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
它失败了,我收到这条消息:Error: GDK_BACKEND does not match available displays
。当我启动 xvfb-run geckodriver
时,它可以工作,但我必须找到一种方法来使用 RSpec.
我在 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
应该做。