3

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

我的限制 - 我不想使用保存的 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 测试 HTTPs 信任所有证书适用于 FF 但不适用于 IE

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

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

我想要的只是这在 Firefox 中有效。我对 IE 和 Google Chrome 不感兴趣。

任何帮助提供答案而不仅仅是将其称为重复将不胜感激。

4

4 回答 4

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 文件并复制描述节点中存在的 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.
于 2012-05-08T07:35:46.813 回答
0

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

于 2013-02-01T04:03:59.830 回答
0

我会建议 Selenium 的替代品。

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

从 Sahi 常见问题页面:

它与 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 集成 - 即你可以编写一个单独的测试脚本并让它在任何一个中工作。我不知道其他语言中有任何类似的工具,但如果它可以帮助您在两者之间迁移可能会很有趣。

于 2012-05-07T16:00:39.820 回答
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。

于 2017-02-20T20:21:52.287 回答