3

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

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

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

尽管此页面已加密,但您输入的信息将通过未加密的连接发送,并且很容易被第三方读取

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

4

3 回答 3

2

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

我设法使用以下方法解决了这个问题,而不是使用clickfrom capybara (这不允许我捕获异常),我开始使用clickselenium-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
于 2012-07-30T13:07:39.720 回答
1

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

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

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

希望这可以帮助。

于 2012-07-27T14:24:29.800 回答
0

实际上,这意味着要发表评论,但我需要超过 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。好摆脱,手指交叉;)

于 2012-07-27T08:45:08.530 回答