首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Cypress自定义命令不返回值

Cypress是一个用于前端自动化测试的JavaScript框架。它提供了丰富的API和工具,可以帮助开发人员编写可靠的端到端测试。

在Cypress中,自定义命令是一种扩展Cypress API的方式,可以将常用的测试步骤封装成可重复使用的命令。自定义命令可以通过Cypress.Commands.add()方法来定义,并且可以在测试代码中像内置命令一样使用。

然而,Cypress的自定义命令默认不返回值。这是因为Cypress的设计理念是基于链式调用,即每个命令都返回一个包含下一个命令的对象,以便实现流畅的测试代码编写。

如果你需要在自定义命令中返回值,可以通过使用Promise来实现。在自定义命令的实现中,可以使用Promise来包装异步操作,并在操作完成后通过resolve()方法返回结果。然后,在测试代码中可以使用.then()方法来获取返回的值。

以下是一个示例,展示了如何在Cypress的自定义命令中返回值:

代码语言:txt
复制
Cypress.Commands.add('customCommand', () => {
  return new Cypress.Promise((resolve, reject) => {
    // 执行异步操作
    // 可以在这里调用其他的Cypress命令或者进行其他的操作

    // 操作完成后,通过resolve()方法返回结果
    resolve('返回的值');
  });
});

在测试代码中,可以通过.then()方法来获取返回的值:

代码语言:txt
复制
cy.customCommand().then((value) => {
  // 使用返回的值进行断言或其他操作
});

需要注意的是,Cypress的自定义命令是在测试运行时执行的,因此如果自定义命令中包含了异步操作,需要确保在操作完成之前不会继续执行后续的测试代码。可以使用Cypress提供的等待命令(如cy.wait())来控制测试的执行顺序。

总结起来,Cypress的自定义命令默认不返回值,但可以通过使用Promise来实现返回值。在自定义命令的实现中,可以使用Promise来包装异步操作,并在操作完成后通过resolve()方法返回结果。在测试代码中,可以使用.then()方法来获取返回的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cypress系列(5)- 自定义 Cypress

如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 Cypress 不仅支持用户自定义文件结构...,还支持用户自定义 Cypress 的各项配置 Cypress 可以通过 文件来实现各项配置的自定义【文件默认是空的】 cypress.json 这里只介绍常用到的配置项,更多配置项请看:https:...超时 Timeouts相关 超时是必须要了解的核心概念 几乎所有命令都可能以某种方式超时 所有断言,无论它们是默认断言还是自己添加的断言都具有相同的超时时间 ?...文件夹 / 文件相关 相对于默认文件结构来说,Cypress 支持用户自定义的文件结构 ? 可视视图 Cypress 在 Test runner 中运行时,会显示一个可视视图 ?...cy.log(`当前配置项信息为${JSON.stringify(Cypress.config())}`) }) 运行任意测试文件,则可以看到执行 visit() 命令前打印了两次log日志 ?

71110

Cypress系列(92)- Cypress.env 命令详解

如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 在测试中获取并设置环境变量 环境变量详解的文章可看...:https://www.cnblogs.com/poloyy/p/13056393.html 作用范围 使用 Cypress.env 设置的环境变量仅在当前规范文件(js 测试文件)的范围内生效 Cypress...隔离运行每个测试文件:在一个测试文件中更改的环境变量在其他测试文件中不可见 语法格式 Cypress.env() Cypress.env(name) Cypress.env(name, value)...Cypress.env(object) name 要获取或设置的环境变量名称 value 要设置的环境变量值 object 使用对象属性( {} 的格式)设置多个环境变量 实际栗子 代码 ?...获取的环境变量是依照上图的 env 来拿的 使用 Cypress.env 设置环境变量会覆盖已有的环境变量 注意事项 首次运行当前测试文件后设置的环境变量会一直保存到结束测试(关闭浏览器或 Stop),

67610

用了cypress自定义命令后,不想用PO模式

最近在用cypress做Web UI自动化,以前用selenium做UI自动化的时候用的最多就是PO模式,现在用cypress做Web UI自动化后,刚开始也是按照selenium那样使用PO模式编写测试用例...,发现不是很好用,每个测试文件都要导入一次对Page Object,后来发现cypress推荐使用PO模式,推荐使用自定义命令,以登录为例子。...不使用自定义命令 /// describe("登录jenkins",function(){ it("登录jenkins成功",function...loginBtnLocator).click() cy.get(loginUserNameLocator).should('contain.text','Alfredfu') }) }) 使用自定义命令...新建自定义命令,在support/command.js,编写如下代码,新增了自定义命令login Cypress.Commands.add('login',(username,password)=>

41430

Cypress系列(44)- 命令行运行 Cypress

前言 前面也介绍过 Cypress 命令行,先来看看它的语法格式 cypress [options] command:必选参数,可以是:open、run、install、verify...Runner) 在测试用例的运行过程中,测试用例的每一条命令,每一个操作都将显式地显示在测试运行器中 最简单的命令 进入项目根目录下 yarn run cypress open ?...所有的配置项都定义在 cypress.json 文件中 cypress open --config-file tests/cypress-config.json --env # 单个环境变量 cypress...指定运行哪些测试文件夹/文件 如果指定测试文件夹,Cypress 将为你自动运行所有存在 Integration 文件夹下的测试用例 栗子 运行某个单独的测试文件而不是所有的测试用例 cypress...--no-exit cypress run --headed --no-exit 结合 --headed 来指定测试运行时显示及在运行后查看命令日志 --reporter、--reporter-options

2.4K50

Cypress系列-使用npm命令搭建cypress环境

安装完之后,执行命令打开cypress: 方式1: cd /d D:\MyScripts\Cypress-demo "..../node_modules/.bin/cypress" open (不加双引号会执行报错) 方式2:执行下面的命令: cd /d D:\MyScripts\Cypress-demo (进入目录再执行命令...,让生成的cypress文件夹存放在该目录) npx cypress open 注意事项: 1、启动cypress时,会在当前执行命令的路径下生成cypress文件夹 2、不要进入到node_modules.../.bin目录下去执行启动命令,否则会报下面的错误:因为.bin目录下已经有一个cypress命令,无法在这个目录下再生成cypress文件夹了。...创建一个项目成功启动后,在项目根目录下用命令启动cypress时,会在根目录生成一个cypress的文件夹,里面有一些写好的现成的测试case: ?

83520

Cypress系列(73)- within() 命令详解

如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 将所有后续 cy 命令的作用域限定在此元素内...(例如 )中工作时很有用 语法格式 .within(callbackFn) .within(options, callbackFn) callbackFn 回调函数 第一个参数是上一条命令的返回结果...(必须是元素) options 参数 log:是否将命令显示到命令日志中,默认 true 正确用法 cy.get('form').within(($form) => { // 在回调函数里,cy...().within(() => {}) 命令返回结果 返回和上一条命令一样的结果 实际栗子 代码 ?...重点:回调函数里的 cy.get() 只会从 form 表单里面找元素,而不是整个页面 get() 和 within() 命令的返回结果 ? ? 两个命令的返回结果都是 form 表单 ?

31610
领券