【问题标题】:How to handle security alert in Firefox with Selenium如何使用 Selenium 在 Firefox 中处理安全警报
【发布时间】:2012-07-25 10:30:58
【问题描述】:

我正在使用 selenium-webdriver 和 ruby​​ 来编写自动化测试。

Chrome 和 chromedriver 二进制文件工作得非常好,但我在 Firefox 上遇到了一个与浏览器配置相关的问题,这导致我的测试失败,而 Chrome 却通过了。

在 Firefox 中执行测试时,有时我会收到一条带有以下消息的警报:

虽然此页面是加密的,但您输入的信息是 通过未加密的连接发送,并且可以很容易地被 第三方

它会中断执行。有没有办法在最近的 Firefox 版本(10+)中禁用此警告或使用 Selenium 处理此行为?

【问题讨论】:

  • 您在 Windows 上运行吗?如果是这样,您会对可以调用的外部脚本感兴趣吗?我有一些已经过良好测试的,但我想我会检查一下你对什么开放。
  • 嘿,克里斯,我正在运行 Linux 和 OS X。尽管,如果它们是解决此问题的 selenium 脚本,它们可能会为我提供有关如何解决此问题的线索。谢谢
  • 我的脚本是 Windows 脚本主机脚本。您是否尝试过禁用 TLS 1.0?如果禁用 TLS 不起作用,我将添加一个描述脚本的答案。弄清楚如何让它们工作很痛苦,但它们非常简单。我也看到人们在 selenium 中讨论了一些 WaitForPopup 方法,但当我看到它时,我已经编写了自己的方法。

标签: ruby firefox selenium selenium-webdriver


【解决方案1】:

在为此寻找解决方案的过程中,我想我可能在 Capybara (v1.1.2) 中发现了一个错误。

我设法使用以下方法解决了这个问题,而不是使用来自 capybara 的 click(这不允许我捕获异常),我开始使用来自 selenium-webdriver 的 click 方法。

好像火狐在触发这个alertbox的时候,是一个带有消息的字符串

虽然此页面已加密,但您输入的信息是 通过未加密的连接发送,并且可以很容易地被 第三方

作为object.native.click的结果返回,否则返回字符串

好的

返回。

# Define the click method in ruby and call it when you're executing a 'click'

  # Public: Click the object.
  #
  # object - Capybara::Node::Element object to click.
  def click object
    return_string = object.native.click
    check_firefox_alertbox if return_string == "ok"
  end

  def check_firefox_alertbox
    if @current_browser == :firefox 
     @session.driver.browser.switch_to.alert.accept
    end
  rescue Exception => e
    puts e
  end

【讨论】:

    【解决方案2】:

    这是你可以做的。在火狐中输入about:config。您将看到许多选项(一旦您通过警告消息)。

    你必须寻找security.warn_leaving_secure;和 security.warn_leaving_insecure。让他们两个都是假的。你会很高兴的。

    请注意:这仅适用于您已修改的 FF 实例,因此您需要使用 firefox 配置文件来启动此实例。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      实际上,这意味着要发表评论,但我需要超过 50 才能发表评论。我想“破坏”执行是指 Ruby 脚本的执行,对吗?火狐会发生什么?需要点击继续吗?如果是这种情况,您可以通过在 BEGIN 和 RESCUE 子句之间插入敏感代码(中断的地方)后捕获 Ruby 错误来即兴发挥。像这样的东西..

        BEGIN
         .
         .
        Code that is giving you a headache
         .
         .
        RESCUE
         .
        Capture the exception and give Ruby a chance to continue the script normally.
         .
         .
        END
      

      或者,如果您不喜欢上述解决方案,您可以转到 Firefox,然后在地址框中输入 about:config。按“security.warn”过滤并将您在此处看到的所有布尔变量设置为 false。好摆脱,手指交叉;)

      【讨论】:

        猜你喜欢
        • 2014-08-10
        • 1970-01-01
        • 2022-09-23
        • 2023-01-02
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        • 1970-01-01
        相关资源
        最近更新 更多