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

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

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

在Firefox中执行测试时,有时我会收到有关此消息的警报:

虽然此页面已加密,但您输入的信息将通过未加密的连接发送,并且可以由第三方轻松读取

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

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

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

当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 

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

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

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

希望这可以帮助。

实际上这只是一个评论,但我需要超过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,然后输入关于:config的地址框。 过滤’ security.warn ‘并将所有布尔变量设置为false。 很好的摆脱,手指交叉;)