2012-07-26 92 views
3

我使用selenium-webdriver和ruby编写自动化测试。如何在Firefox中使用Selenium处理安全警报

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

当执行在Firefox的测试,有时我得到这个消息的警告:

虽然该网页是加密的,您所输入的信息是 通过未加密的连接发送,并可以很容易地阅读 第三方

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

+0

您是否在Windows上运行?如果是这样,你会对可以调用的外部脚本感兴趣吗?我有一些经过很好测试的,但我想我会检查你的开放。 – chrismead 2012-07-26 21:04:06

+0

hey chris,我正在运行Linux和OS X.尽管如此,如果他们是解决这个问题的硒脚本,他们可能会给我一些关于如何解决这个问题的线索。谢谢 – bruno077 2012-07-26 21:06:24

+0

我的脚本是windows脚本宿主脚本。你有没有尝试禁用TLS 1.0?如果禁用TLS不起作用,我将添加一个描述脚本的答案。找出如何让他们工作是一件很痛苦的事,但他们很简单。我也看到人们在硒中讨论了一些WaitForPopup方法,但是当我看到这些时,我已经写了自己的方法。 – chrismead 2012-07-26 21:19:34

回答

2

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

我设法解决了这个问题,使用下面的方法,而不是使用水豚click(这不会让我捕获一个例外),我开始使用selenium-webdriver的click方法。

看来,当Firefox的触发此alertbox,与消息

虽然这个页面被加密的字符串,您所输入的信息是 通过未加密的连接发送,并可以很容易地通过读取 第三方

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

ok

被返回。

# 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 
0

实际上这意味着评论,但我需要超过50才能评论..我想通过'打破'你的意思是Ruby脚本的执行权吗? Firefox会发生什么?需要点击进行?如果是这样,你可以通过插入敏感的代码(如果它打破)之间的BEGIN和救援clause..Something这样之后捕捉红宝石错误即兴的情况下..

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以显示您在此处看到的所有布尔变量。好的摆脱,手指交叉;)

1

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

您必须查找security.warn_leaving_secure;和security.warn_leaving_insecure。使他们都是假的。你会很开心。

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

希望这会有所帮助。

相关问题