如何解决 Cypress 访问 https 站点仍然出现不安全警告的问题?

如何解决 Cypress 访问 https 站点仍然出现不安全警告的问题?

背景

在进行前端自动化测试时,我们通常使用 Cypress 作为测试工具。但是在使用 Cypress 访问 https 站点时,有些情况下仍然会出现不安全警告,这样会影响我们的测试结果。本文将介绍如何解决这一问题。

原因分析

通常情况下,一个网站在使用 https 协议时,会使用 SSL/TLS 协议进行加密通信,以保证通信的安全性。Cypress 使用的是 Electron 浏览器,而 Electron 浏览器本身带有一个内置的证书机构(root certificate authority),可以向操作系统验证自签名证书。这意味着 Cypress 可以识别大多数自签名证书。然而,当某些站点的证书不被 Cypress 信任时,就会出现不安全警告。

解决方案

对于上述情况,我们可以通过以下两种方式来解决:

1. 添加自定义证书

我们可以手动添加自定义证书,以使 Cypress 可以信任该证书。

首先,我们需要获得该站点的自定义证书。通常,我们可以在浏览器中打开该站点,在地址栏上点击锁图标,然后点击证书按钮,再选择复制到文件,将证书以 .pem 格式保存下来。

接着,我们可以在 Cypress 的配置文件中添加以下代码:

----- -- - --------------
-------------- - ---- ------- -- -
    --------------------------- --------- -------------- -- -
        -- --------------- --- ----------- -
            ----- ----------- - -------------------
            -- ---------------------------- -
                -------------------------------------------------- - ---------------------------- ---------
            -
        -
        ------ --------------
    ---
--

其中,需要将 path/to/cert.pem 替换为证书文件的路径。

2. 关闭 SSL/TLS 校验

如果站点无法提供有效证书,或者我们无法获取该站点的自定义证书,我们可以在 Cypress 的配置文件中添加以下代码,以关闭 SSL/TLS 校验:

-------------- - ---- ------- -- -
    --------------------------- --------- -------------- -- -
        -- --------------- --- ----------- -
            -------------------------------------------------------------- - -----
        -
        ------ --------------
    ---
--

示例代码

我们以访问 https://self-signed.badssl.com/ 为例,演示如何添加自定义证书。

首先,我们需要在浏览器中打开该站点,在地址栏上点击锁图标,然后点击证书按钮,再选择复制到文件,将证书以 .pem 格式保存下来。

然后,我们在 Cypress 的配置文件 cypress.json 中添加以下代码:

-
  ---------- ----------------------------------
  -------------------- -----
-

接着,我们在 support/index.js 中添加以下代码:

----- -- - --------------
-------------- - ---- ------- -- -
    --------------------------- --------- -------------- -- -
        -- --------------- --- ----------- -
            ----- ----------- - -----------------------------------
            -- ---------------------------- -
                -------------------------------------------------- - ---------------------------- ---------
            -
        -
        ------ --------------
    ---
--

其中,需要将 cypress/fixtures/badssl_cert.pem 替换为证书文件的路径。

最后,我们编写一个测试用例,检查页面是否有特定元素:

------------ --------------------------------- -- -- -
    ---------------------- -- -- -
        -------------
        ------------------------------- -------------
    --
--

运行测试用例后,我们可以看到控制台输出的日志,证明我们已经成功访问了站点:

----------

--------
  ------------- ----------------------------------

-------------
  ------------------ -------------

结论

本文介绍了在使用 Cypress 访问 https 站点仍然出现不安全警告的问题,以及两种解决方案:添加自定义证书和关闭 SSL/TLS 校验。同时,我们还演示了如何使用自定义证书的方法来访问自签名证书的站点。希望这篇文章能够帮助读者解决类似的问题。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6709cbf7d91dce0dc87bc7ef