如何使用Selenium在Firefox中处理安全警报

时间:2012-07-26 18:48:42

标签: ruby firefox selenium selenium-webdriver

我正在使用带有ruby的selenium-webdriver来编写自动化测试。

Chrome和chromedriver二进制文件工作得非常好,但是我遇到了与浏览器配置相关的Firefox问题,这使我的测试失败,而他们通过了Chrome。

在Firefox中执行测试时,有时会收到包含此消息的警告:

  

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

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

3 个答案:

答案 0 :(得分:2)

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

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

当Firefox触发此警报框时,似乎是一个带有消息的字符串

  

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

由于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

答案 1 :(得分:1)

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

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

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

希望这有帮助。

答案 2 :(得分:0)

实际上这只是一个评论,但我需要超过50才能发表评论。我想通过'打破'执行你的意思是Ruby脚本的权利吗? Firefox会发生什么?需要点击才能继续?如果是这种情况,您可以通过在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。很好的摆脱,手指交叉;)