我正在使用带有ruby的selenium-webdriver来编写自动化测试。
Chrome和chromedriver二进制文件工作得非常好,但是我遇到了与浏览器配置相关的Firefox问题,这使我的测试失败,而他们通过了Chrome。
在Firefox中执行测试时,有时会收到包含此消息的警告:
虽然此页面已加密,但您输入的信息是 通过未加密的连接发送,可以很容易地被读取 第三方
它打破了执行。有没有办法在最近的Firefox版本(10+)中禁用此警告或使用Selenium处理此行为?
答案 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。很好的摆脱,手指交叉;)