【问题标题】:Unable to bypass insecure certificate warning with Firefox using Watir使用 Watir 的 Firefox 无法绕过不安全的证书警告
【发布时间】:2017-08-06 10:19:43
【问题描述】:

使用带有 Watir 6.2.0 的 Firefox 驱动程序时,我似乎无法忽略任何证书警告。这是意外行为,还是我没有正确使用 API?

示例代码

require 'watir'

profile = Selenium::WebDriver::Firefox::Profile.new
profile.assume_untrusted_certificate_issuer = false

browser = Watir::Browser.new(:firefox, :profile => profile)

browser.goto 'https://self-signed.badssl.com/

意外结果

/Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok': Selenium::WebDriver::Error::UnknownError
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/default.rb:107:in `request'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/w3c_bridge.rb:620:in `execute'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/remote/w3c_bridge.rb:126:in `get'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/selenium-webdriver-3.3.0/lib/selenium/webdriver/common/navigation.rb:32:in `to'
    from /Users/bshannon/.rvm/gems/ruby-2.4.0/gems/watir-6.2.0/lib/watir/browser.rb:78:in `goto'
    from /Users/bshannon/Desktop/test.rb:8:in `<main>'

环境:

Watir 6.2.0
Selenium Webdriver 3.3.0
Geckodriver 0.15
Firefox 52.0
Mac OSX

【问题讨论】:

    标签: ruby selenium selenium-webdriver watir geckodriver


    【解决方案1】:

    您可以通过desired capabilities 执行此操作。 https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings#ssl-certificates 上还有其他文档。

    require 'watir'
    capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(accept_insecure_certs: true)
    
    browser = Watir::Browser.new(:firefox, :desired_capabilities => capabilities)
    browser.goto 'https://self-signed.badssl.com/'
    puts browser.url                               #=> https://self-signed.badssl.com/
    browser.close
    

    【讨论】:

    【解决方案2】:

    试试这个:

    profile.accept_untrusted_certificates = true
    profile.assume_untrusted_certificate_issuer = true
    

    【讨论】:

    • 我在尝试此操作时收到以下错误:'
      ': undefined method 'accept_untrusted_certificates=' for #<:webdriver::firefox::profile:0x007fd10494b088> (NoMethodError)跨度>
    • 你能试试吗:webdriver_accept_untrusted_certs = true webdriver_assume_untrusted_issuer = true
    • 不幸的是,也没有运气。对于问题可能是什么,您还有其他想法吗?根据我在文档中阅读的内容,它似乎应该默认信任自签名证书?
    • 我唯一的其他建议是将木偶能力设置为 true
    • 不要使用 Geckodriver,它有很多问题,所以将你的 Firefox 降级到 47.0.2 并使用旧版 firebox 驱动程序,一切正常。
    【解决方案3】:

    如果您改用 Chrome,则需要这样做:

    Watir::Browser.new(:chrome, switches: ['--ignore-certificate-errors'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 2013-04-04
      • 2013-04-03
      • 2012-08-03
      • 2015-01-28
      相关资源
      最近更新 更多