【问题标题】:Selenium + Firefox + HTTPS硒 + 火狐 + HTTPS
【发布时间】:2012-05-07 15:49:37
【问题描述】:

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

我的限制 - 我不想使用保存的 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 和 Google Chrome 不感兴趣。

非常感谢您提供答案而不只是将其称为重复项的任何帮助。

【问题讨论】:

    标签: firefox selenium https


    【解决方案1】:

    我会建议 Selenium 的替代品。

    你试过Sahi吗?它基本上是一个非常相似的应用程序,因为它允许脚本化浏览器控制,但在很多情况下它似乎比 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 集成 - 即你可以编写一个单独的测试脚本并拥有它在任何一个工作。我不知道其他语言中有任何类似的工具,但如果它可以帮助您在两者之间迁移,可能会很有趣。

    【讨论】:

      【解决方案2】:

      所以解决方案原来是上面提到的第 5 点。 以下是解决问题的步骤 -

      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.
      

      【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我整理了一个示例,展示了如何使用 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-03-03
          • 2012-04-12
          • 2012-09-28
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 2012-09-15
          • 2011-01-04
          相关资源
          最近更新 更多