Ruby Selenium - 警告:driver_path 已弃用
Ruby Selenium - warning that :driver_path is deprecated
使用 Ruby selenium-webdriver 3.142.6
我的测试有效,但在 运行 开始时显示警告
WARN Selenium [DEPRECATION] :driver_path is deprecated. Use :service with an instance of Selenium::WebDriver::Service instead.
根据 Ruby 文档 Selenium::WebDriver::Service 是私有的 API。
在网络上搜索与警告相关的文章提到了我正在使用的 Capybara、RoR 和 chromedriver-help,none。我试过 'gem install webdrivers' 但失败了。
关于采取的路径的任何建议:忽略弃用消息,或使用私有服务 class(以及如何使用它),或尝试用 webdrivers 替换 selenium-webdriver,或其他还有吗?
这是成功创建带有警告的 Selenium 驱动程序的代码
require "selenium-webdriver"
require "test/unit"
require "byebug"
...
class GoogleTest < Test::Unit::TestCase
def setup
case $browser_arg
when 'chrome'
browser = :chrome
driver_path = '/selenium_browser_drivers/chromedriver'
when 'firefox'
browser = :firefox
driver_path = '/selenium_browser_drivers/geckodriver'
else
raise ArgumentError.new("Unexpected browser argument '#{$browser_arg}'")
exit
end
@se = Selenium::WebDriver.for browser, :driver_path => driver_path
end
...
宝石文件
source 'https://rubygems.org'
gem 'selenium-webdriver', '~> 3.142.0'
gem 'test-unit', '~> 3.3.0'
gem 'byebug', '~> 9.1.0'
Gemfile.lock
GEM
remote: https://rubygems.org/
specs:
byebug (9.1.0)
childprocess (3.0.0)
power_assert (1.1.5)
rubyzip (2.0.0)
selenium-webdriver (3.142.6)
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
test-unit (3.3.4)
power_assert
PLATFORMS
ruby
DEPENDENCIES
byebug (~> 9.1.0)
selenium-webdriver (~> 3.142.0)
test-unit (~> 3.3.0)
BUNDLED WITH
2.0.2
命令gem列表的输出
backports (3.15.0)
bigdecimal (default: 1.3.4)
builder (3.2.3)
bundler (2.0.2, 1.16.1, default: 1.16.0)
byebug (9.1.0)
childprocess (3.0.0, 0.8.0)
cmath (default: 1.0.0)
csv (default: 1.0.0)
cucumber (3.1.2)
cucumber-core (3.2.1)
cucumber-expressions (6.0.1)
cucumber-tag_expressions (1.1.1)
cucumber-wire (0.0.1)
date (default: 1.0.0)
dbm (default: 1.0.0)
did_you_mean (1.2.0)
diff-lcs (1.3)
etc (default: 1.0.0)
fcntl (default: 1.0.0)
ffi (1.9.18)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
gherkin (5.1.0)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
json (default: 2.1.0)
minitest (5.10.3)
multi_json (1.13.1)
multi_test (0.1.2)
net-telnet (0.1.1)
openssl (default: 2.1.0)
power_assert (1.1.5, 1.1.1)
psych (default: 3.0.2)
rake (12.3.0)
rdoc (default: 6.0.1)
rspec (3.9.0, 3.7.0, 3.6.0)
rspec-core (3.9.0, 3.7.1, 3.6.0)
rspec-expectations (3.9.0, 3.7.0, 3.6.0)
rspec-mocks (3.9.0, 3.7.0, 3.6.0)
rspec-support (3.9.0, 3.7.1, 3.7.0, 3.6.0)
rubyzip (2.0.0, 1.2.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
selenium-webdriver (3.142.6, 3.8.0)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
test-unit (3.3.4, 3.2.7)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)
您甚至可以在实例化驱动程序变量之前通过显式分配 driver_path 变量来避免此错误。看下面代码
require 'selenium-webdriver'
Selenium::WebDriver::Chrome::Service.driver_path = "C:/Ruby26/chromedriver.exe"
driver = Selenium::WebDriver.for :chrome
driver.manage.timeouts.implicit_wait = 10
driver.navigate.to("https://www.google.com/")
driver.find_element(name: 'q').send_keys 'raja'
此代码未给出该警告。因为我在创建驱动器之前分配了该值 Selenium::WebDriver::Chrome::Service.driver_path = "C:/Ruby26/chromedriver.exe"
。
使用 Ruby selenium-webdriver 3.142.6
我的测试有效,但在 运行 开始时显示警告
WARN Selenium [DEPRECATION] :driver_path is deprecated. Use :service with an instance of Selenium::WebDriver::Service instead.
根据 Ruby 文档 Selenium::WebDriver::Service 是私有的 API。
在网络上搜索与警告相关的文章提到了我正在使用的 Capybara、RoR 和 chromedriver-help,none。我试过 'gem install webdrivers' 但失败了。
关于采取的路径的任何建议:忽略弃用消息,或使用私有服务 class(以及如何使用它),或尝试用 webdrivers 替换 selenium-webdriver,或其他还有吗?
这是成功创建带有警告的 Selenium 驱动程序的代码
require "selenium-webdriver"
require "test/unit"
require "byebug"
...
class GoogleTest < Test::Unit::TestCase
def setup
case $browser_arg
when 'chrome'
browser = :chrome
driver_path = '/selenium_browser_drivers/chromedriver'
when 'firefox'
browser = :firefox
driver_path = '/selenium_browser_drivers/geckodriver'
else
raise ArgumentError.new("Unexpected browser argument '#{$browser_arg}'")
exit
end
@se = Selenium::WebDriver.for browser, :driver_path => driver_path
end
...
宝石文件
source 'https://rubygems.org'
gem 'selenium-webdriver', '~> 3.142.0'
gem 'test-unit', '~> 3.3.0'
gem 'byebug', '~> 9.1.0'
Gemfile.lock
GEM
remote: https://rubygems.org/
specs:
byebug (9.1.0)
childprocess (3.0.0)
power_assert (1.1.5)
rubyzip (2.0.0)
selenium-webdriver (3.142.6)
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
test-unit (3.3.4)
power_assert
PLATFORMS
ruby
DEPENDENCIES
byebug (~> 9.1.0)
selenium-webdriver (~> 3.142.0)
test-unit (~> 3.3.0)
BUNDLED WITH
2.0.2
命令gem列表的输出
backports (3.15.0)
bigdecimal (default: 1.3.4)
builder (3.2.3)
bundler (2.0.2, 1.16.1, default: 1.16.0)
byebug (9.1.0)
childprocess (3.0.0, 0.8.0)
cmath (default: 1.0.0)
csv (default: 1.0.0)
cucumber (3.1.2)
cucumber-core (3.2.1)
cucumber-expressions (6.0.1)
cucumber-tag_expressions (1.1.1)
cucumber-wire (0.0.1)
date (default: 1.0.0)
dbm (default: 1.0.0)
did_you_mean (1.2.0)
diff-lcs (1.3)
etc (default: 1.0.0)
fcntl (default: 1.0.0)
ffi (1.9.18)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
gherkin (5.1.0)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
json (default: 2.1.0)
minitest (5.10.3)
multi_json (1.13.1)
multi_test (0.1.2)
net-telnet (0.1.1)
openssl (default: 2.1.0)
power_assert (1.1.5, 1.1.1)
psych (default: 3.0.2)
rake (12.3.0)
rdoc (default: 6.0.1)
rspec (3.9.0, 3.7.0, 3.6.0)
rspec-core (3.9.0, 3.7.1, 3.6.0)
rspec-expectations (3.9.0, 3.7.0, 3.6.0)
rspec-mocks (3.9.0, 3.7.0, 3.6.0)
rspec-support (3.9.0, 3.7.1, 3.7.0, 3.6.0)
rubyzip (2.0.0, 1.2.1)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
selenium-webdriver (3.142.6, 3.8.0)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
test-unit (3.3.4, 3.2.7)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)
您甚至可以在实例化驱动程序变量之前通过显式分配 driver_path 变量来避免此错误。看下面代码
require 'selenium-webdriver'
Selenium::WebDriver::Chrome::Service.driver_path = "C:/Ruby26/chromedriver.exe"
driver = Selenium::WebDriver.for :chrome
driver.manage.timeouts.implicit_wait = 10
driver.navigate.to("https://www.google.com/")
driver.find_element(name: 'q').send_keys 'raja'
此代码未给出该警告。因为我在创建驱动器之前分配了该值 Selenium::WebDriver::Chrome::Service.driver_path = "C:/Ruby26/chromedriver.exe"
。