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

quhf5bfb  于 2023-01-30  发布在  其他
关注(0)|答案(5)|浏览(129)

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

driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400]

(根据敏捷Web开发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文档中做了一些搜索,但是我的基本代码技能仍然让我不清楚应该如何更正这个问题。有人能告诉我如何更正这个问题吗?
(My业余的猜测试验,比如:

driven_by :selenium, :capabilities['headless_chrome', 'screen_size: 1400, 1400']

全部导致错误)

h7wcgrx3

h7wcgrx31#

新警告的更新版本,包含选项而非功能

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
mhd8tkvw

mhd8tkvw2#

在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
gwo2fgha

gwo2fgha3#

我已经偶然发现过这个线程几次了。困扰我的不仅仅是那些弃用的消息,还有启动测试套件时的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, capabilities: 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, capabilities: options)
  end

  ENV['HEADLESS'] ? driven_by(:headless_chrome) : driven_by(:chrome)
end

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

HEADLESS=1 rails test:all
az31mfrm

az31mfrm4#

禁止显示警告

一线修复:

# rails_helper.rb
Selenium::WebDriver.logger.ignore(:browser_options)

此处建议

(很可能)任何版本的Capybara〉3.36.0
编辑:@silvia96已经是3.38.0了,仍然收到警告
这是一个相当令人困惑的bug,因为如果你看一下Capybara的驱动程序注册,你会发现它已经知道using capabilitiesThe actual bug是因为Gem版本测试被设置为~而不是>=。修复是主要的,3.36.0之后的任何版本的Capybara都可能修复它。

gz5pxeao

gz5pxeao5#

结合其他人的有用解决方案,我的是这样的:删除彪马日志,制作Headless Chromium ,忽略浏览器选项错误:

require "test_helper"

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  driven_by :selenium, using: :headless_chrome
  Capybara.server = :puma, { Silent: true }
  Selenium::WebDriver.logger.ignore(:browser_options)

end

相关问题