gpt4 book ai didi

ruby - 无法在 headless 模式下使用 firefox、Capybara 和 Docker 运行 selenium

转载 作者:行者123 更新时间:2023-12-05 08:41:53 24 4
gpt4 key购买 nike

我正在尝试使用 Selenium 和带有 Capybara 的 Firefox 运行测试。当我运行测试时,它会向“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

它失败了,我收到此消息:错误:GDK_BACKEND 与可用显示不匹配。当我启动 xvfb-run geckodriver 时,它可以工作,但我必须找到一种方法来使用 RSpec 在 headless 模式下启动 geckodriver。

我在 docker env 上,所以我没有安装 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

应该做。

关于ruby - 无法在 headless 模式下使用 firefox、Capybara 和 Docker 运行 selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46576124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com