我使用了这篇文章“使用 debuggerAddress 连接到手动打开的 Chrome 浏览器”

问题描述 投票:0回答:1

我参考了Justin Ko关于附加Chrome浏览器的文章。我过去曾成功地使用过同样的方法,而且对我来说效果很好。但是,我目前正在使用以下代码再次尝试。

require 'watir'    
browser = Watir::Browser.new(
  :chrome,
  'chromeOptions' => {'debuggerAddress': '127.0.0.1:8181'})    
browser.goto 'www.google.com'    
browser.text_field(name: 'q').set 'Raja'

并且它正在生成此错误消息。

C:\Ruby32\bin\ruby.exe C:/A/TestBot/AppData/Example.rb
C:/Ruby32/lib/ruby/gems/3.2.0/gems/watir-7.3.0/lib/watir/capabilities.rb:29:in `to_args': {"chromeOptions"=>{:debuggerAddress=>"127.0.0.1:8181"}} are unrecognized arguments for Browser constructor (ArgumentError)

      raise ArgumentError, "#{@options} are unrecognized arguments for Browser constructor" unless @options.empty?
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        from C:/Ruby32/lib/ruby/gems/3.2.0/gems/watir-7.3.0/lib/watir/browser.rb:46:in `initialize'
        from C:/A/TestBot/AppData/Example.rb:3:in `new'
        from C:/A/TestBot/AppData/Example.rb:3:in `<main>'

我考虑到可能是参数传递的方式发生了变化,所以我写了下面的代码。

require 'watir'
chrome_options = { 'debuggerAddress': '127.0.0.1:8181' }    
browser = Watir::Browser.new :chrome, options: chrome_options    
browser.goto 'www.google.com'    
browser.text_field(name: 'q').set 'Raja'

但这也会引发以下错误。

C:\Ruby32\bin\ruby.exe C:/A/TestBot/AppData/Example.rb
C:/Ruby32/lib/ruby/gems/3.2.0/gems/selenium-webdriver-4.17.0/lib/selenium/webdriver/common/options.rb:118:in `as_json': These options are not w3c compliant: {:debuggerAddress=>"127.0.0.1:8181"} (Selenium::WebDriver::Error::WebDriverError)
        from C:/Ruby32/lib/ruby/gems/3.2.0/gems/selenium-webdriver-4.17.0/lib/selenium/webdriver/common/local_driver.rb:42:in `process_options'

有人可以帮我解决这个问题吗?

最终,我的目标是使用与 Chrome 相同的方法来附加 Edge 浏览器。不过,我需要先成功附加 Chrome 浏览器。

ruby selenium-webdriver watir
1个回答
0
投票

参数名称从“debuggerAddress”更改为“debugger_address”:

browser = Watir::Browser.new(:chrome, options: {debugger_address: '127.0.0.1:8181'})
© www.soinside.com 2019 - 2024. All rights reserved.