如何纠正此 Selenium 初始化命令弃用警告?

jbk*_*jbk 20 selenium headless selenium-chromedriver selenium-webdriver

使用 Rails 6,我尝试在无头模式下设置 selenium 进行系统测试,我在 application_system_test_case.db 中使用此语句:

driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400]
Run Code Online (Sandbox Code Playgroud)

(根据Agile Web Dev Rails 6教程)

但它给了我这个弃用警告:

Selenium [DEPRECATION] [:browser_options] :options as a parameter for driver initialization is deprecated. Use :capabilities with an Array of value capabilities/options if necessary instead.

我已经在 Selenium文档中进行了一些搜索,但我的基本代码技能仍然让我不清楚应该如何纠正这个问题。谁能告诉我如何纠正这个问题?

(我的业余猜测试验如下:

driven_by :selenium, :capabilities['headless_chrome', 'screen_size: 1400, 1400']
Run Code Online (Sandbox Code Playgroud)

都会导致错误)

Dor*_*ian 21

新警告的更新版本包含选项而不是功能

Capybara.register_driver :headless_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')

  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    options: options
  )
end

Capybara.register_driver :chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new

  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    options: options
  )
end

Capybara.default_driver = :chrome
Run Code Online (Sandbox Code Playgroud)


Arm*_*ndo 12

在 Selenium 4 中,options必须以数组形式传递capabilities

def selenium_options
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  options
end

# optional
def selenium_capabilities_chrome
  Selenium::WebDriver::Remote::Capabilities.chrome
end

def driver_init
  caps = [
    selenium_options,
    selenium_capabilities_chrome,
  ]

  Selenium::WebDriver.for(:chrome, capabilities: caps)
end

driver = driver_init
Run Code Online (Sandbox Code Playgroud)


Fla*_*che 8

我已经好几次偶然发现这个线程了。让我烦恼的不仅是已弃用的消息,还有启动测试套件时的 puma 服务器日志。我最终修复了弃用警告并关闭了 puma 日志。这是我当前的设置:

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  # provides devise methods such as login_session
  include Devise::Test::IntegrationHelpers

  # removes noisy logs when launching tests
  Capybara.server = :puma, { Silent: true }

  Capybara.register_driver :headless_chrome do |app|
    options = Selenium::WebDriver::Chrome::Options.new(args: %w[headless window-size=1400,1000])
    Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
  end

  Capybara.register_driver(:chrome) do |app|
    options = Selenium::WebDriver::Chrome::Options.new(args: %w[window-size=1400,1000])
    Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
  end

  ENV['HEADLESS'] ? driven_by(:headless_chrome) : driven_by(:chrome)
end
Run Code Online (Sandbox Code Playgroud)

因此,您可以启动测试,例如:

HEADLESS=1 rails test:all
Run Code Online (Sandbox Code Playgroud)