desired_capabilities更新问题:Selenium WebDriver语言 - Ruby



这里是超级新手。尝试使用Ruby使用Selenium WebDriver更新此测试,我正在经历的课程使用了以下已弃用的方法。

driver = Selenium::WebDriver.for :remote, desired_capabilities: :firefox

当我尝试运行测试时,我在cmd中得到的错误是

"WARN Selenium [DEPRECATION] [:desired_capabilities]:desired_capabilities不支持作为驱动程序初始化的参数。如有必要,使用:capabilities和数组值capabilities/options代替。">

所以我试图找到如何抑制这个链接中提到的错误的例子,但我很难找到如何实现的例子。

我也试着查找几种方法来使用功能:正如建议的那样,但我也很难找到相关资源,所以我只是乱了一圈,尝试了不同的组合,但无济于事。

好奇是否有人知道什么可以帮助我找到这个问题的答案?

也看了这些来源

  • https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities
  • https://www.lambdatest.com/blog/desired-capabilities-in-selenium-testing/
  • Selenium包含firefox配置文件到DesiredCapabilities for Remote Driver
  • https://www.selenium.dev/documentation/webdriver/remote_webdriver/

基于最后一个链接,我相信下面应该工作?但是我确定我只是在语法上遗漏了一些东西。

driver = Selenium::WebDriver。:远程:Capabilities.firefox

Selenium功能不在Ruby中应有的位置。你现在应该完全避免使用Capabilities。

下面是Selenium文档中的一个示例,其中包含如何正确使用Options的before/after: https://www.selenium.dev/documentation/webdriver/getting_started/upgrade_to_selenium_4/#before

它与其他Selenium语言的工作方式不匹配,所以我计划更改Selenium 4.3中的弃用项以使它们匹配。

# spec/rails_helper.rb
Capybara.server = :puma, { Silent: true }
Capybara.server_port = 9887
Capybara.register_driver :headless_chrome do |app|
options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
opts.args << '--headless'
opts.args << '--disable-site-isolation-trials'
opts.args << '--no-sandbox'
end
options.add_preference(:download, prompt_for_download: false, default_directory: Rails.root.join('tmp/capybara/downloads'))
options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
service_options = ::Selenium::WebDriver::Service.chrome(
args: {
port: 9515,
read_timeout: 120
}
)
remote_caps = Selenium::WebDriver::Remote::Capabilities.chrome(
'goog:loggingPrefs': {
browser: ENV['JS_LOG'].to_s == 'true' ? 'ALL' : nil
}.compact
)
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
capabilities: [remote_caps, options],
service: service_options,
timeout: 120
)
end
Capybara::Screenshot.register_driver(:headless_chrome) do |driver, path|
driver.browser.save_screenshot(path)
end
Capybara.javascript_driver = :headless_chrome
我希望这对你有帮助。

最新更新