Cypress: 如何与 Selenium 集成?

阅读时长 6 分钟读完

前言

Cypress 作为一个全新的前端测试框架,相较于传统的 Selenium 已经在易用性和性能上拓宽了很多优秀的地方。不过,在实际使用过程中很多团队并不是从零开始进行自动化测试,而是需要在已有的 Selenium 测试基础上集成 Cypress,这就需要我们来聚焦这个问题,本文便是探讨基于 Cypress 与 Selenium 的集成方式。

Cypress Vs. Selenium

Cypress 在易用性,编写测试脚本时的自动提示和 Debug 功能,独立的 Cypress Runner,在浏览器内跑的自动化测试等方面都有着独到的优势。而 Selenium 更是一个被企业广泛使用、可扩展性极高的自动化测试框架。

在次级场景下,有需要 Cypress 与 Selenium 集成的实际需求,例如在 Cypress 中使用真实浏览器模拟 Node.js 后端行为以测试前端和后端的完整集成(实现类似于快速 Mock API )。此时,我们需要先引入 Selenium,然后再利用内置的 Selenium Wrappers 来模拟请求来模拟 API 。

集成方法

Selenium 的 WebdriverIO 能与 Cypress 进行成功集成,首先引入 Selenium 需要进行 NPM 安装(推荐全局安装):

通过 npm 安装之后,可以在 cypress/support/index.js 配置文件中引入对 Selenium 的依赖:

配置 Selenium WebdriverIO

接着在 cypress/plugins/index.js 文件中配置 Selenium WebdriverIO:

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

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

使用 Selenium WebdriverIO 进行测试

在 Cypress 中运行 Selenium WebdriverIO 的测试非常简单,只需要在 Cypress 命令行介面中进行以下操作:

  1. 启动 Selenium WebdriverIO
  1. 运行 Cypress 测试脚本

在运行 Cypress 测试脚本时,需要在 Cypress 的测试目录下的 commands.js 中定义一个命令,如下所示:

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

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

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

---

定义完命令之后,在 Cypress 中引入 createSeleniumSession 即可使用 Selenium WebdriverIO 代码驱动浏览器进行测试,如下所示:

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

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

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

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

  --

---

总结

本文主要介绍了如何在 Cypress 中集成 Selenium。通过上述步骤,我们可以利用 Cypress 与 Selenium 来打破隔膜,深入地测试与前端相关的应用场景,例如进行前后端集成测试时使用 Selenium 模拟 API 请求,并通过 Cypress Runner 进行 UI 测试,既能自动化,又能确保测试质量,是一种很有效的测试方式。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6503e6b295b1f8cacd0aa204

纠错
反馈