Cypress - 自定义命令


Cypress 自定义命令是由用户描述的,而不是 Cypress 的默认命令。这些自定义命令用于创建在自动化流程中重复的测试步骤。

我们可以添加和覆盖已经存在的命令。它们应该放置在 Cypress 项目的 support 文件夹中的 commands.js 文件中。

Cypress Project Command

语法

Cypress 中自定义命令的语法如下:

Cypress.Commands.add(function-name, func)

Cypress.Commands.add(function-name, opts, func)

Cypress.Commands.overwrite(function-name, func)

这里,

  • function-name 是正在添加/覆盖的命令。

  • func 是传递给命令的参数的函数。

  • opts 用于传递一个选项来描述自定义命令的隐式特性。它也用于确定如何处理先前产生的主题(仅适用于 Cypress.Commands.add())并且选项的默认值为 false。选项 prevSubject 接受 false 以忽略先前的主题,接受 true 以接受先前的主题,并接受 optional 以启动链或使用预先存在的链。选项接受字符串、数组或布尔值。

自定义命令的实现

以下是 commands.js 中自定义命令的实现:

Cypress.Commands.add("userInput", (searchTxt) => {
   //to input search text in Google and perform search
   cy.get("input[type='text']").type(searchTxt);
   cy.contains("Google Search").click();
});

实际测试的实现

以下是使用自定义命令在 Cypress 中实现实际测试的示例:

describe('Tutorialspoint Test', function () {
   // test case
   it('Test Case 6', function (){
      // launch the application
      cy.visit("https://www.google.com/");
      //custom parent command
      cy.userInput('Java')
   });
});

执行结果

输出如下:

Implementation of Actual Testing

输出日志显示了自定义命令 – userInput(包含 get、type 和 click 命令)正在执行。

建议自定义命令不要太长。它应该简短,因为在自定义命令中添加过多的操作会导致执行显示。

广告