Selenium + Firefox + HTTPS

时间:2012-05-07 15:49:37

标签: firefox selenium https

好。我知道我正在问一个陈词滥调的问题,但是我发布了这个问题,因为尽管尝试了各种链接上提供的所有解决方案,但我的问题仍未得到解决。

我的约束 - 我不想使用保存的firefox配置文件来保存网站的证书。

Selenium服务器版本 - 2.0b3

尝试解决方案 -
1)http://seleniumhq.org/docs/05_selenium_rc.html#handling-https-and-security-popups
浏览器启动器* firefox
Selenium以trustAllSSLCertificates选项开始 没有帮助。 FF再次要求保存证书。

2)http://blog.mogotest.com/2010/04/13/how-to-accept-self-signed-ssl-certificates-in-selenium/
浏览器启动器* firefoxproxy
Selenium以trustAllSSLCertificates选项开始 没有帮助。

3)Selenium Testing HTTPs Trust All certificates working for FF but not IE

4)除此之外,我尝试创建自己的cert_override.txt并按照https://developer.mozilla.org/En/Cert_override.txt中的说明填充5个字段,但获取第5个字段的值,即证书的序列号和发布者名称作为base64编码如http://tinyurl.com/ce4vn99中所述,字符串并不简单。

5)使用记住证书异常添加Firefox http://sejq.blogspot.in/2009/01/remember-certificate-exception.html是另一种选择,但我无法对其进行完全静默安装。当我们将xpi文件放在所需的目录中时,下次Firefox启动时,它会提示说它应该找到插件还是应该继续安装。插件不仅会反映在浏览器中。如果有人能够至少帮助我完成 FULL 静默安装,那就太棒了!

我想要的是这适用于Firefox。我对IE和谷歌浏览器不感兴趣。

任何帮助提供答案而不仅仅是将其视为副本将不胜感激。

4 个答案:

答案 0 :(得分:0)

我建议选择Selenium。

你试过Sahi吗?它基本上是一个非常相似的应用程序,因为它允许脚本化的浏览器控制,但在很多情况下,它似乎比Selenium更好。

来自Sahi FAQ页面:

  

与Selenium相比如何?

     

Sahi更容易学习和使用测试人员。 Sahi的录音机适用于所有浏览器。 Sahi自动等待AJAX​​和页面加载。它不使用XPath,但使用更直观的API,如_in和_near。 Sahi适用于框架,iframe,弹出窗口,具有动态ID的站点,https站点,401认证站点等。它具有内置的HTML报告,并且能够并行运行多个脚本。

根据我的经验,这是准确的。 Selenium遇到了某些类型的浏览器事件,Sahi处理得更好。

我知道这并不能解决你对Selenium的问题,而且我知道如果你已经在Selenium中编写测试以在Sahi中重新执行它们会很痛苦,所以它可能不是你正在寻找的解决方案,但如果一切都失败了,可能值得考虑。

ps - 你没有提到你的开发环境,但有一个基于PHP的测试工具叫Mink,它集成了Sahi和Selenium - 即你可以编写一个单独的测试脚本和让它在任何一个都有效。我不知道其他语言中的任何类似工具,但如果它可以帮助您在两者之间进行迁移,那么它可能会引起人们的兴趣。

答案 1 :(得分:0)

因此解决方案成为上述第五点。 以下是解决问题的步骤 -

1)从https://addons.mozilla.org/en-US/firefox/addon/remember-certificate-exception/

下载Remember Certificate Exception xpi文件

2)解压缩以获取一组文件。将它们保存在临时文件夹中。 (temp_folder / extracted_files)

3)打开install.rdf文件并复制Description节点中存在的em:id节点的内容。

4)重命名刚使用此复制字符串创建的临时文件夹。

5)将此文件夹放在profile_name / extensions /目录下。同时从配置文件文件夹中删除extensions.cache / .ini / .rdf文件。这些都需要删除,以防止用户被提示他的个人资料已被更改,并且有一个新的插件要安装。只有删除了3个文件,它才会完全静默安装。

这可以使用脚本自动完成。

#!/bin/bash
mkdir /tmp/addon
cp -r ~/POC/remember_certificate_exception-1.0.0-fx.xpi /tmp/addon
unzip /tmp/addon/remember_certificate_exception-1.0.0-fx.xpi -d /tmp/addon
rm /tmp/addon/remember_certificate_exception-1.0.0-fx.xpi
folder_name=$(cat /tmp/addon/install.rdf | grep -m 1 "<em:id>" | cut -f2 -d ">" | cut -f1 -d "<")
mv /tmp/addon /tmp/$folder_name
cp -r /tmp/$folder_name ~/.mozilla/firefox/*.default/extensions
rm -f ~/.mozilla/firefox/*.default/extensions.

答案 2 :(得分:0)

https://addons.mozilla.org/en-US/firefox/addon/skip-cert-error/ 使用此插件。这将绕过https错误。这也是可配置的

答案 3 :(得分:0)

我汇总了一个示例,展示了如何使用Selenium来测试HTTPS端点 - 而不会忽略证书验证错误。它显示了如何使用受信任的根CA设置selenium客户端,这些CA可用于验证正在测试的HTTPS端点提供的服务器证书。见https://github.com/JeNeSuisPasDave/Selenium-and-TLS

该示例演示了Chrome和Firefox Selenium节点。 Chrome会在系统可信证书库中查找用于验证的根CA证书; Firefox查找当前配置文件中的cert8.db文件。

我认为这种方法很重要,因为我认为指导您的测试工具忽略证书错误是不必要的风险;这样做可能最终会隐藏您希望在部署到生产之前被困的错误。

我写了一篇关于这个主题的简短帖子https://develves.net/blogs/asd/2017-02-20-selenium-and-tls/,但你真的需要上面链接的示例repo。