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

调用另一个自定义命令的自定义命令不会在Cypress中获得其值

在Cypress中,调用另一个自定义命令的自定义命令不会直接获得其值。这是因为Cypress的命令是异步执行的,而JavaScript中的函数调用是同步的。因此,在Cypress中,如果想要在一个自定义命令中获取另一个自定义命令的返回值,需要使用.then()方法或者使用cy.wrap()来处理异步操作。

以下是一种可能的解决方案:

  1. 创建一个自定义命令,例如getCustomValue(),用于获取需要的值。该命令可以使用.then()方法来处理异步操作,并返回获取到的值。
代码语言:txt
复制
Cypress.Commands.add('getCustomValue', () => {
  // 异步操作,例如从API获取数据
  return cy.request('GET', 'https://example.com/api/data')
    .then(response => {
      // 处理获取到的数据
      const value = response.body.value;
      return value;
    });
});
  1. 创建另一个自定义命令,例如useCustomValue(),用于调用getCustomValue()并使用其返回的值。
代码语言:txt
复制
Cypress.Commands.add('useCustomValue', () => {
  cy.getCustomValue().then(value => {
    // 使用获取到的值进行其他操作
    cy.log(`The custom value is: ${value}`);
    // 其他操作...
  });
});

在测试中,可以通过调用useCustomValue()来使用获取到的值:

代码语言:txt
复制
it('should use custom value', () => {
  cy.useCustomValue();
});

这样,当调用useCustomValue()时,它会先调用getCustomValue()来获取值,并在获取到值后进行其他操作。

请注意,以上示例中的getCustomValue()useCustomValue()只是示意,实际使用时需要根据具体的需求进行修改和适配。

腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):https://cloud.tencent.com/product/scf
  • 云开发(CloudBase):https://cloud.tencent.com/product/tcb
  • 云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cypress安装与使用教程(3)—— 软测大玩家

自定义命令 2.1 参数传递 2.2 链式调用 2.3 自定义断言 2.4 处理异步操作 2.5 Cypress对象 3. 注意点 3.1 关于脚本业务上下文 3.2 抽象程度 1....自定义命令   在Cypress自定义命令是一个强大辅助功能,说直白点就是它允许你将重复使用代码片段抽象成可重用命令。...使用起来是不是很方便,因为本身就是将业务方法继续抽象,所以直接调用方法名就可以达到登录代码同样效果。...cy.waitForApiResponse(); 2.5 Cypress对象   除了以上说这些方法外,我们还可以将一些元素和包装成Cypress对象,这样做作用就是让这些抽象后对象可以在自定义命令中使用更多...3.1 关于脚本业务上下文   在自定义命令,当然也存在着上下文关系,我们要确保了解Cypress命令上下文,其中this与prevSubject 是特别觉有代表性关键字。

28610

Cypress系列(63)- 使用 Custom Commands

(name, callbackFn) 参数说明 name:要添加或覆盖命令名称 callbackFn :自定义命令回调函数,回调函数里自定义函数所需完成操作步骤 options:允许自定义命令隐性行为...element:要求上一个主题是DOM元素 document:要求上一个主题为文档 window:要求上一个主题是窗口 Cypress 内置命令利用了上述可选组合每一个 注意:仅在 Cypress.Commands.add.../操作函数共享) cypress/support/command.js 自定义命令可以比 PageObject 模式运行更快,Cypress 和应用程序运行在同一个浏览器,意味着 Cypress 可以直接发送请求到应用程序并设置运行测试所需要用户状态...,而这一切通常无须通过页面操作,这使得使用了自定义命令测试会更加稳定 自定义命令允许重写 Cypress 内置命令,意味着可以自定义测试框架并立刻全局应用 Custom Commands 完全替换 PageObject...实际情况 可能需要屏蔽传递给 命令某些,以便敏感数据不会显示在测试运行屏幕截图或视频 .type() 下面的示例将覆盖 命令,以允许屏蔽测试运行程序命令日志敏感数据 .type() Cypress.Command.overwrite

2K72
  • Cypress系列(69)- route() 命令详解

    (例如页面加载和 标记)将不会在命令日志中被拦截或看到 实验性功能 实验性 route2() 命令,该命令支持使用 Fetch API 请求以及其他类型网络请求,例如页面加载;该命令将在后面...如果要对响应体做断言,可以从这对象里面拿到对应 重点一 Cypress 通过 cy.route().as() 和 cy.wait() ,可以自动等到接口返回以后再执行后续操作,增强了测试用例健壮性...会在命令日志显示 XHR 是发送给服务器还是 stub ?...在命令日志显示(XHR STUB)XHR就是发送到 stub,并且它们 response,status,headers,delay 已由匹配 cy.route() 控制 ?...单击命令日志命令时,在开发者工具 Console Cypress 还会显示 XHR是 否存根到控制台、匹配到 URL Initiator 是启动器,里面是发送 XHR 堆栈跟踪 无法使用

    1.4K40

    Cypress系列(4)- 解析 Cypress 默认文件结构

    命令首次打开 CypressCypress 会自动进行初始化配置并生成一个默认文件夹结构,如下图 ?...默认就在 目录下,但也可以配置到另一个目录 cypress/fixtures 外部静态数据详解 测试夹具静态数据通常存储在 文件,如自动生成 examples.json .json 静态数据通常是某个网络请求对应响应部分...mock) 使用测试夹具好处 消除了对外部功能模块依赖 已编写测试用例可以使用测试夹具提供固定返回,并且你确切知道这个返回是你想要 因为无须真正地发送网络请求,所以测试更快 命令示例 要查看...Cypress 每个命令示例,可以打开 cypress/integration/examples ,里面都是官方提供栗子 test file 测试文件 简介 测试文件就是测试用例,默认位于 cypress...痛点:和外部通信困难】 插件文件诞生 Cypress 为了解决上述痛点提供了一些现成插件,使你可以修改或扩展 Cypress 内部行为(如:动态修改配置信息和环境变量等),也可以自定义自己插件

    2.5K20

    Cypress web自动化19-自定义命令,把登陆当公共方法commands.js

    前言 测试一个web网站时候,通常需要先登录。要是每个脚本都写一次登录流程,太麻烦了,于是我们会想到写一个公共函数,这样每次去调用函数即可。...cypress 里面提供了一个 commands.js 可以自定义命令,如使用cy.login(user,password)就能调用了 登录 前面写了一个登陆案例,参考https://www.cnblogs.com...自定义命令cypress/support/commands.js 自定义一个login命令,方便用例调用 // # 上海-悠悠,QQ交流群:750815713 Cypress.Commands.add...') // 判断存在cookie 'zentaosid' cy.getCookie('zentaosid').should('exist') }) 接下来写个登录后,访问首页案例,看是否调用成功...beforeEach() 会每个用例都会运行一次,这样会有个弊端,所以使用before() 多个用例记住cookies Cypress会在每个test运行前自动清掉所有的cookie。

    1.5K30

    Cypress系列(5)- 自定义 Cypress

    ,还支持用户自定义 Cypress 各项配置 Cypress 可以通过 文件来实现各项配置自定义【文件默认是空cypress.json 这里只介绍常用到配置项,更多配置项请看:https:...超时 Timeouts相关 超时是必须要了解核心概念 几乎所有命令都可能以某种方式超时 所有断言,无论它们是默认断言还是自己添加断言都具有相同超时时间 ?...文件夹 / 文件相关 相对于默认文件结构来说,Cypress 支持用户自定义文件结构 ? 可视视图 Cypress 在 Test runner 运行时,会显示一个可视视图 ?...获取所有config信息 Cypress.config() // 获取指定配置项信息 Cypress.config(name) // 更改指定配置项默认 Cypress.config(name...pageLoadTimeout",100000) // 再次获取 pageLoadTimeout cy.log(`pageLoadTimeout默认是:${Cypress.config

    76410

    Cypress系列(90)- Cypress.Cookies 命令详解以及如何跨测试用例共享 Cookies

    通过在每次测试之前清除 Cookie,可以确保始终从干净状态开始测试 从一个干净状态开始,可以防止测试用例彼此耦合,也可以防止在一项测试对应用程序某些内容进行更改而影响下游情况 实际场景 如果不保存...注意:目前如果使用是基于 Session Cookie,此命令有效 实际使用模板 ? 实际栗子 测试用例代码 ?...自定义了一个 login 方法,主要就是登录操作 运行结果 ?...将始终在测试用例之间保留 只要调用了这个方法,将在其他测试用例中都会生效 重点 在 配置此命令是绝佳选择 cypress/support/index.js 因为它会在所有测试文件之前加载 options...Cookie 也共享成功了 总结 这种方式感觉更适合在项目中使用 一般我们都会提前知道需要 Cookie 是什么,此时就能提前在 调用命令去设置 Cookie 了 support/index.js

    2.5K10

    Cypress系列(101)- intercept() 命令详解

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 使用该命令在网络层管理 HTTP 请求行为...: number } string 如果传递一个字符串,这个相当于响应 body 等价于 StaticResponse 对象 { body: "foo" } object 如果传递了没有 StaticResponse...,但不可链接其他命令 as() 可以使用 等待 cy.intercept() 路由匹配上请求,这将会产生一个对象,包含匹配上请求/响应相关信息 cy.wait() 实际栗子前置准备 Cypress...自定义一个 JSON 响应体 测试代码 ? 会从cypress安装目录/fixtures 下读取对应数据文件,它会变成响应 body 数据 test.json 数据文件 ? 运行结果 ?...简单来说就是 cy.type() 命令执行完后会返回一个 promise 对象,同时又会调用回调函数,而回调函数内又调用了 cy.get() 返回了一个 promise 对象,Cypress 会将这种情况当做测试失败处理

    2.7K20

    Cypress系列(96)- exec() 命令详解

    (command) cy.exec(command, options) command 从项目根目录(包含默认 cypress.json 配置文件目录)执行系统命令 options log:是否将命令显示到命令日志...,默认 true timeout:命令超时时间 failOnNonZeroExit:如果命令返回结果 code 属性非 0 则返回失败 env:在执行命令之前要设置环境变量对象(如: ),将与现有系统环境变量合并...注意事项 第一 不要尝试从 cy.exec() 启动网络服务器 命令必须能退出 不支持不退出命令 cy.exec() 命令必须在 execTimeout 内退出,否则 Cypress 将杀死该命令进程并导致当前测试失败...可以自定义 execTimeout 可以修改 execTimeout 来延长系统命令执行时间 Cypress.config('execTimeout', 30000) Cypress.config...('execTimeout') // => 30000 设置后,剩下所有测试用例都会生效 在测试用例集配置项自定义 execTimeout describe('has data available

    75430

    Cypress系列(6)- Cypress 重试机制

    Cypress 核心概念之一,有助于我们写出更加健壮测试 命令和断言 Cypress 测试中经常被调用两种类型,仍以前面说到 testLogin.js 为栗子 ?...Cypress 是全局,不用针对元素去单独识别 Cypress 这种自动重试机制避免了在测试代码编写硬编码等待(强制等待),使测试代码更加健壮 多重断言 在日常测试,有时候需要多重断言,即获取元素后跟多个断言...代码解析 总共有三个断言:一个 ,两个 expect() should() 断言实际上是 should() 断言别名,它是 should() 自定义回调断言,其中包含两个 expect() 断言...重试(Retry-ability)条件 前言 Cypress 并不会重试所有命令,当命令可能改变被测应用程序状态时,该命令将不会重试(如: ,毕竟要点击) click() Cypress 仅会重试那些查询...重试超时时间默认是 4秒,对应配置项是: defaultCommondTimeout ,如果想改重试超时时间,在 cypress.json 文件改对应字段即可

    2K10

    Cypress系列(60)- 运行时截图和录屏

    文件夹下,而录屏会保存在 cypress/video 文件夹下 命令行运行结果 ?...自定义截图,.screenshot() 方法 作用 截取被测应用程序屏幕快照,以及 Cypress 命令日志屏幕快照 语法格式 .screenshot() .screenshot(fileName)...cy.get('.post').screenshot() 命令返回结果 返回上一条命令相同结果 .screenshot() 栗子 测试代码 it('简单栗子', function () {...可以看到各配置项(options)默认 onBeforeScreenshot 栗子 截图某个元素 测试代码 ? 测试结果 ? $el 是当前元素 截图结果 ? 截图整个页面 测试代码 ?...可以看到 props 是当前一些属性,后面有需要可以获取对应属性(格式:props.path) onAfterScreenshot 源码 ? 可以看到不同属性数据类型

    1.7K31

    Cypress与TestCafe WebUI端到端测试框架Demo

    启动运行Cypress 方法一: 使用cmd命令行启动 (npm高于v5.2版本自带npx, 或者你也可以单独安装npx.) npx cypress open ?...和 support 是非必须使用文件夹,需要自定义指令时候会用到。...cd到你项目文件下,要创建测试,请新建一个后缀名为.js或.ts文件。这个文件必须有一个特殊结构-测试必须组织到fixture。...你可以将这些函数作为常规异步函数调用,也就是说,你可以获得它们结果并使用参数向它们传递数据。 Selector API提供方法和属性来选择页面上元素并获取它们状态。...; }); 总结: 在接触了Cypress和TestCafe之后,惊掉下巴,这两个工具轻量级之轻,与之前使用Selenium相比,简直无法想象,从安装到执行第一个脚本,从上述学习笔记可以看出,

    3.9K30

    Cypress系列(41)- Cypress 测试报告

    内置测试报告 内置测试报告包括 Mocha 内置测试报告和直接嵌入在 Cypress 测试报告,主要有以下几种 spec 格式报告 json 格式报告 junit 格式报告 准备工作 确保...中使用 spec 格式报告非常简单,在命令行运行时加上 --reporter=spec 运行测试 进入 Cypress 安装目录,cmd敲 yarn cypress:run --reorter=...自定义测试报告 除了内置测试报告,Cypress 也支持用户自动以报告格式 Mochawesome 报告介绍 Mochawesome 是与 JavaScript 测试框架 Mocha 一起使用自定义报告程序...用户自定义报告步骤 第一步:配置 reporter 选项 文件配置 reporter 选项,指定 reporter 文件位置 cypress.json 在本栗子,把 reporter 定义在...文件 custom_reporter.js 第二步:编写自定义报告文件 进入 Cypress 安装目录下 cypress 目录下(本案例在: ) C:\Users\user\Desktop\py

    2K10

    用了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)=>

    43730

    摆脱前端测试恶梦:摇摆不定测试(2)

    这是作为beforeEach 生命周期钩子第一步,以确保每次都能执行重置。之后,专门为测试创建测试数据--对于这个测试案例,将通过一个自定义命令创建一个客户。...有许多方法可以做到这一点,但Cypress处理得特别好。 所有的Cypress命令都拥有一个隐含等待方法。...它们已经检查了该命令所应用元素是否在DOM存在指定时间--指向Cypress重试能力。然而,它只检查是否存在,仅此而已。...,动态等待另一个巧妙可能性是网络功能。...是的,我们可以等待请求发生,并等待响应结果。我特别经常使用这种等待。在下面的例子,我们定义了要等待请求,使用一个wait 命令来等待响应,并断言状态代码。

    1.2K20

    Cypress系列(65)- 测试运行失败自动重试

    (如,外部依赖项中断,随机网络错误等)而导致测试失败 其他导致不可靠测试因素 前端动画 API 调用 测试服务器/数据库可用性 依赖资源可用性 网络问题 重试优势 通过重试,Cypress 能够重试失败测试用例...{ "scripts" : { "retryCases":"CYPRESS_RETRIES=2 cypress run" } } 使用 在 Cypress 安装目录下运行下面命令...,所有测试用例若失败都会自动重试 2 次 yarn retryCases Cypress 自带重试功能介绍 前言 默认情况下,测试将在失败时不重试,需要在配置启用测试重试才能使用此功能 启用测试重试后...,则会重试运行第一次 重试运行第一次若成功,则继续往下运行其他测试用例 若重试运行第一次还失败,则重试运行第二次 若重试运行第二次仍然失败,则将此 测试用例标记为失败 注:能够在命令日志查看尝试次数...这样无论是 cypress run 命令还是 cypress open 命令,重试次数都是 2 自定义配置 测试用例级别 context('测试用例级别', function () { it('

    2.2K43

    后Selenium时代--Cypress 小试牛刀

    这个时候呢,我们就一路回车,最后输入一个 yes + 回车初始化完成,会在你目录下生成 package.json 文件,现在我们安装 cypress 了 在 CMD 使用如下命令。...1)CMD 命令行进入 F:\mycypress\node_modules.bin 文件夹 2)执行 cypress open 或者执行 npx cypress open ?...pligins:用于存放插件目录 results:此目录并非项目初始化时候目录,这是生成测试报告结果 JSON 文件目录,可以在 cypress.json 配置 screenshots...可以自定义函数,该函数会在测试文件被导入之前,加载到同级目录 index.js ,然后我们可以在我们测试用例文件通过 cy.方法名 方式直接调用。...热文精选 接口功能测试专辑 性能测试专题 图解HTTP脑图 写给所有人编程思维 如何维护自动化测试 有关UI测试计划 Selenium自动化测试技巧 敏捷测试面临挑战 API自动化测试指南

    83210
    领券