2017-06-16 15 views
6

Phiên bản Chrome: 59.0.3071.104Cách sử dụng chrome không đầu với capybara và selenium

Sử dụng dưa chuột, Capybara, Selenium để thực hiện kiểm tra tự động hóa bằng Chrome không đầu.

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 

Khi chạy một thử nghiệm dưa chuột, nó nói:

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

là gì cách chính xác để sử dụng Capybara và selen với Headless Chrome. Cảm ơn bạn.

CHỈNH SỬA 1: Tôi đã thử các cách sau bằng cách sử dụng Ruby-Binding, CapybaraWorking Example. Nhưng nó cũng gây ra lỗi.

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 

Lỗi:

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

Chỉnh sửa 2: Tải mới nhất ChromeDriver 2.30

Sử dụng ví dụ từ ChromeDriver Capabilities & tôi nhận được một lỗi.

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 

Trả lời

5

1) Hãy chắc chắn rằng bạn không có một tài xế đăng ký, tôi đã sai lầm này bản thân mình và có một trình điều khiển iphone, được sử dụng args theo cách cũ, đó là lý do tại sao tôi đã nhận được cảnh báo.

2) Hãy chắc chắn rằng bạn có phiên bản Chrome 57+ trên Linux, 59+ trên hệ điều hành MacOS hoặc 60+ trên Windows;

3) Thêm/cập nhật đá quý selenium-webdriver;

4) Thêm lái xe sau-spec_helper.rb hoặc rails_helper.rb của bạn:

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 
+0

Cảm ơn.Tôi đã thoát khỏi cảnh báo thành công. – kstratis

1

hỗ trợ Windows đang đến trong Chrome 60.

Tải "Chome Canary" và cung cấp cho các đường dẫn cài đặt như một binary trong chromeOptions.

Tải "chromedriver" mới nhất và thêm vào đường dẫn trong Biến môi trường.

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

Capybara.register_driver :selenium_chrome do |app| 
    caps = Selenium::WebDriver::Remote::Capabilities.chrome(
    "chromeOptions" => { 
     "binary" => "C:/Users/YOURUSERNAME/AppData/Local/Google/Chrome SxS/Application/chrome.exe", 
     "args" => [ "--disable-web-security", "--headless", "--disable-gpu" ] 
    } 
) 
    Capybara::Selenium::Driver.new(
    app, 
    browser: :chrome, 
    desired_capabilities: caps 
) 
end 

Capybara.default_driver = :selenium_chrome 
0

tôi có thể có được điều này làm việc với phiên bản hiện tại của Chrome, nhưng nó sẽ hiển thị một cửa sổ trống. Nếu bạn muốn loại bỏ điều đó, bạn cần sử dụng bản dựng "Chrome Canary".

Mã dưới đây là sự kết hợp của các câu trả lời mà @ lucas-caton và @ shawn-derik, nhưng giải quyết được vấn đề tôi đã đề cập ở trên.

Capybara.register_driver :chrome do |app| 
    Capybara::Selenium::Driver.new(
    app, 
    browser: :chrome, 
    options: Selenium::WebDriver::Chrome::Options.new(
     binary: 'C:/Users/USERNAME/AppData/Local/Google/Chrome SxS/Application/chrome.exe', 
     args: %w[no-sandbox headless disable-gpu] 
    ) 
) 
end 
Các vấn đề liên quan