如何将无头铬与水豚和硒一起使用 [英] How to use headless chrome with capybara and selenium

查看:32
本文介绍了如何将无头铬与水豚和硒一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Chrome 版本:59.0.3071.104

Chrome version: 59.0.3071.104

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

Using Cucumber, Capybara, Selenium to implement automation testing with Headless Chrome.

功能/支持/env.rb

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

运行黄瓜测试时,它说:

When running a cucumber test, it says:

警告 Selenium [DEPRECATION] :args 或 :switches 已弃用.利用Selenium::WebDriver::Chrome::Options#add_argument 代替.

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

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

What is the correct way to use capybara and selenium with Headless Chrome. Thank you.

编辑 1:我使用 Ruby-Binding 尝试了以下操作,Capybara 和 工作示例.但它也会产生错误.

EDIT 1: I tried the following using Ruby-Binding, Capybara and Working Example. But it gives errors as well.

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

Edit 2: Download the latest ChromeDriver 2.30

使用 ChromeDriver Capabilities 中的示例 &Chrome 命令行开关 我收到一个错误.

Using the example from ChromeDriver Capabilities & Chrome Command Line Switches I get an error.

Net::ReadTimeout (Net::ReadTimeout)

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,这就是我收到警告的原因.

1) Make sure you don't have another registered driver, I made this mistake myself and had an iphone driver, which was using the args in the old way, that's why I was getting the warning.

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

2) Make sure you have Chrome version 57+ on Linux, 59+ on macOS or 60+ on Windows;

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

3) Add/update the gem selenium-webdriver;

4) 将以下 driver 添加到您的 spec_helper.rbrails_helper.rb:

4) Add the following driver to your spec_helper.rb or rails_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

这篇关于如何将无头铬与水豚和硒一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆