gpt4 book ai didi

ruby - 如何将 headless Chrome 与 capybara 和 Selenium 一起使用

转载 作者:数据小太阳 更新时间:2023-10-29 06:49:04 25 4
gpt4 key购买 nike

Chrome 版本:59.0.3071.104

使用 Cucumber、Capybara、Selenium 通过 Headless Chrome 实现自动化测试。

features/support/env.rb

require 'rubygems'
require 'capybara/cucumber'

Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome, args: ['headless'])
end

Capybara.default_driver = :selenium_chrome

运行 cucumber 测试时,它说:

WARN Selenium [DEPRECATION] :args or :switches is deprecated. Use Selenium::WebDriver::Chrome::Options#add_argument instead.

在 Headless Chrome 中使用 capybara 和 Selenium 的正确方法是什么。谢谢。

编辑 1:我使用 Ruby-Binding 尝试了以下操作, CapybaraWorking Example .但它也会出错。

require 'rubygems'
require 'capybara/cucumber'
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
driver = Selenium::WebDriver.for :chrome, options: options
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: driver
)
end

Capybara.default_driver = :selenium_chrome

错误:

> undefined method `each' for
> #<Selenium::WebDriver::Remote::Capabilities:0xd13baac> (NoMethodError)

编辑 2:下载最新ChromeDriver 2.30

使用 ChromeDriver Capabilities 中的示例& Chrome Command Line Switches我收到一个错误。

Net::ReadTimeout (Net::ReadTimeout)

require 'rubygems'
require 'capybara/cucumber'
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"chromeOptions" => {
"binary" => "/chromedriver_win32/chromedriver.exe",
"args" => [ "--disable-web-security", "--headless" ]
}
)
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: caps
)
end

Capybara.default_driver = :selenium_chrome

最佳答案

1) 确保您没有其他已注册的驱动程序,我自己犯了这个错误并且有一个 iphone 驱动程序,它以旧方式使用 args ,这就是我收到警告的原因。

2) 确保您的 Chrome 版本在 Linux 上为 57+,在 macOS 上为 59+ 或在 Windows 上为 60+

3) 添加/更新 gem selenium-webdriver;

4) 将以下驱动程序添加到您的spec_helper.rbrails_helper.rb:

Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new app, browser: :chrome,
options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu])
end

Capybara.javascript_driver = :chrome

关于ruby - 如何将 headless Chrome 与 capybara 和 Selenium 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591612/

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