在链接器方法之外将元素的文本存储在 Cypress 中

2023-12-06

如何存储 div 的文本值一次并在整个 cypress 测试中使用它?

到目前为止,我已经通过将大部分测试逻辑嵌套在调用中来做到这一点then方法,但这看起来并不优雅或理想。

cy.get('div').then(($div) => {
    let storedVar = $div.text()
    // Bulk of dependent test logic gets nested here
})

我尝试将文本存储在 then 方法之外,如下所示:

let storedVar = ''

cy.get('div').then($div => {storedVar=$div.text()})

但这行不通(因为这是一个承诺,存储变量在整个测试过程中保持其初始值)。

这个嵌套解决方案有什么替代方案吗?


在cypress中存储值,需要使用别名因为cypress的异步特性const value = cy.get('div').text()不会给你你预期的输出。

赛普拉斯的价值观和别名

您需要使用别名来实现您所需要的。但正如您在问题中提到的,如果您要在创建它的同一测试用例中使用别名,则需要使用.then。因为正如我之前提到的,cypress 执行是异步的,所以如果您使用下面提到的别名,它不会给您预期的输出。

it("test",function (){
cy.get('div').invoke('text').as('value')
//this is wrong
cy.log(this.value)
})

正确的方法是,

it("test",function (){
cy.get('div').invoke('text').as('value').then(() => {
cy.log(this.value)
})
})

要记住的第二件事是,当您在编写钩子时使用别名时,如果您希望使用以前创建的别名,请不要使用箭头函数。所以it("test",() => {})不会起作用,但是it("test", function(){})将工作。

根据你的问题,你可以使用这样的别名,

Example:

//Lets create aliases in test01, test02 and test03
before("test01",() => {
cy.get('div').invoke('text').as('var1');
})

it("test02",() => {
cy.get('div').then($el => {
cy.wrap($el.text()).as('val2')
})
})

it("test03",() => {
cy.get('div').invoke('text').as('var3')
})

//let's create use those created aliases in another test
//remember - NO arrow functions to create hooks when using aliases
it("test04", function(){
const variable = this.var3
cy.log(this.var1)
cy.log(this.var2)
cy.log(variable)
//All the above commands will log the expected innerText values
})

希望这就是您正在寻找的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在链接器方法之外将元素的文本存储在 Cypress 中 的相关文章

  • 单击输入[复选框]的标签将触发父级单击事件两次(淘汰)

    考虑这把小提琴 http jsfiddle net 9rkrahm6 我有一个
  • dojo dijit.form.DateTextBox 约束不起作用,datetextbox

    嗨 我是 javascript 和 dojo 的新手 我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围 一旦选择了开始日期或结束日期 我想限制可用的日期 以便不可能选择按时间顺序排列在开始日期
  • 如何在同一页面上使用AJAX处理多个表单

    我有一个表单 当我单击 提交 时 它就被提交了 然后该表单隐藏 操作页面的结果显示在 div 中 classname dig 它工作正常 但是当我添加另一个表单时 它停止正常工作并且所有表单同时提交 我如何更改我的代码 done click
  • 关闭选项卡时要求确认[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我在某些浏览器上关闭页面时 我希望出现一个消息框 并询问我是否真的要关闭页面 有两个按钮 如果我单击No那么这个标签就不会被关闭 我怎样
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a

随机推荐

  • 文件中注释的字符数(C 编程)

    我似乎无法做到正确 尝试了一切 但是 int commentChars char str 256 fileName 256 FILE fp int i do long commentCount 0 fflush stdin printf s
  • 当 glob 以斜杠结尾时,如何防止 pathlib 的 Path.glob 返回文件?

    新的Path glob from pathlib似乎行为与旧的不同glob glob当 glob 模式以斜杠结尾时 In 1 from pathlib import Path In 2 from glob import glob In 3
  • Selenium Webdriver - NoSuchElementExceptions

    我正在将 python 单元测试库 unittest 与 selenium webdriver 一起使用 我试图通过名称找到一个元素 大约一半的情况下 测试会抛出 NoSuchElementException 而另一些情况下则不会抛出异常
  • 如何在 postgres 中选择日期范围?

    我在 postgres 数据库中有一个时间戳字段 我想选择上个月内发生的所有日期 所以类似于 select from table where timestamp gt 当前时间戳 1 个月 select from table where t
  • 可以向 YouTube iframe 添加 onclick 事件吗?

    我有一个带有 HTML5 音频播放器和嵌入式 YouTube 音乐视频的网站 我想做到这一点 当用户点击 YouTube 视频来播放时 音乐就会停止 将 iframe 包裹起来 div YT stuff div 适用于 iframe 外部的
  • 使用 preg_replace 替换字符,除非前面有转义字符

    我正在尝试执行以下操作 希望有一位 reg ex 专家能够提供一些启示 我需要替换代码中的字符 并将其设为 但在某些情况下 需要保持 而不是改变 所以我认为我需要使用 preg replace string 具有合适的正则表达式的函数将导致
  • 使用 Devise Rails 实现用户和管理员之间的唯一 ID

    我已经使用本教程中的选项 1 安装了 Devise 并创建了用户和管理员https github com plataformatec devise wiki How To 添加管理员角色 现在我需要一点帮助 添加管理员时 它会创建一个不同的
  • Angular 不发送 Cookie

    我的角度11 http localhost 4200 现在正在与我的节点 API 服务器 http localhost 3000 通信 API 服务器在 cookie 中发回 sessionID 但后续浏览器对 API 的请求不会附带 co
  • Java内部类和静态嵌套类

    Java 中内部类和静态嵌套类的主要区别是什么 设计 实施在选择其中之一时发挥作用吗 来自Java教程 嵌套类分为两类 静态类和非静态类 声明为静态的嵌套类简称为静态嵌套类 非静态嵌套类称为内部类 使用封闭类名访问静态嵌套类 OuterCl
  • 如何使用服务器端加密将spark rdd写入S3

    我正在尝试使用服务器端加密将 RDD 写入 S3 中 以下是我的一段代码 val sparkConf new SparkConf setMaster local setAppName aws encryption val sc new Sp
  • Gulp - 按文件夹编译sass,并修改父目录

    我是 gulpfile 的新手 我不知道如何使用单个任务迭代多个文件夹 我的 src 文件夹结构 folder1 assets style scss folder2 assets style scss folder3 subfolder1
  • asp mvc 列出具有动态变化规格的电子商务产品

    我正在尝试为电子商务网站开发产品详细信息页面 假设我们在视图中列出一些产品 现在当用户单击产品时 他会进入产品详细信息视图以显示产品规格 包括添加到购物车 评论等 但这里是产品每个产品的规格都会动态变化 example 服装产品 Size
  • 使用python读取middlebury'flow'文件(字节数组和numpy)

    我正在尝试将 flo 文件读取为 numpy 2Channels 图像 格式描述如下 flo file format used for optical flow evaluation Stores 2 band float image fo
  • 为什么 java 中的操作赋值运算符类型不安全?

    我不确定这个问题是否表述清楚 但举个例子会更清楚 我发现这在 Java 中不起作用 int a a 5 0 但这将 int a a 5 0 即 看起来 运算符是类型安全的 但 不是 这是否有任何深层原因 或者这只是语言设计者必须做出的另一个
  • libGdx 如何使用图像或演员作为主体

    我浏览了 libGdx wiki 教程 但没有找到使用图像或演员作为物理体的示例 在我的游戏中 我在舞台上添加了一名演员 但我想添加这个演员或精灵图像作为物理体 我必须拖动这个演员 甚至想要检测与其他物体的碰撞 如果有请给我参考 Thank
  • 修改shell脚本来监控/ping多个ip地址

    好吧 所以我需要不断监控多个路由器和计算机 以确保它们保持在线 我找到了一个很棒的剧本here如果无法 ping 通单个 IP 它将通过咆哮通知我 这样我就可以在手机上收到即时通知 我一直在尝试修改脚本以 ping 多个地址 但运气不佳 当
  • 执行从 Xib 到 ViewController 的 segue

    我有一个带有按钮的 Xib 文件 单击按钮时我想转到另一个视图控制器 我已经在 StoryBoard 中的视图控制器之间创建了一个 Segue 并创建了一个标识符 但似乎无法以编程方式调用它 IBAction func buttonActi
  • Log4j |更新Appender的日志级别

    我的 log4j properties 文件 log4j rootLogger INFO stdout console output appender log4j appender stdout org apache log4j Conso
  • pandas“DataFrame”对象没有属性“map”

    我有两个 df df a 和 df b df a number cur code 1000 USD 700 2000 USD 800 3000 USD 900 df b number amount deletion code 1000 0
  • 在链接器方法之外将元素的文本存储在 Cypress 中

    如何存储 div 的文本值一次并在整个 cypress 测试中使用它 到目前为止 我已经通过将大部分测试逻辑嵌套在调用中来做到这一点then方法 但这看起来并不优雅或理想 cy get div then div gt let storedV