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)
我已经好几次偶然发现这个线程了。让我烦恼的不仅是已弃用的消息,还有启动测试套件时的 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)
| 归档时间: |
|
| 查看次数: |
8338 次 |
| 最近记录: |