cypress - 赛普拉斯:将值存储在变量中
问题描述
我想将 td 值存储在变量中。为什么这段代码不起作用?
let storedValue;
cy.get('tbody>tr:nth-child(1)>td:nth-child(3)').invoke('text').then(text =>
{
storedValue = text;
})
cy.contains(storedValue).should('exist');
它返回“cy.contains() 只能接受字符串、数字或正则表达式”
解决方案
更好的方法是使用aliases
.
cy.get('tbody>tr:nth-child(1)>td:nth-child(3)').invoke('text').as('storedValue')
cy.get('@storedValue').then((storedValue) => {
//Access storedValue here
cy.log(storedValue) //prints value
})
或者如果你只是想检查元素是否存在,你可以直接这样做:
cy.get('tbody>tr:nth-child(1)>td:nth-child(3)').should('exist')
至于为什么你的代码不工作的问题,这是因为 javascript 是异步工作的,所以不是首先获取文本的代码,而是首先执行 contains 语句,它失败的原因是其中storedValue
没有任何内容,简而言之,就是undefined
。要修复,您必须添加then()
以便代码按照我们希望它运行的顺序运行。
let storedValue
cy.get('tbody>tr:nth-child(1)>td:nth-child(3)')
.invoke('text')
.then((text) => {
storedValue = text
})
.then(() => {
cy.contains(storedValue).should('exist')
})
推荐阅读
- android - 当用户点击地图时,如何更改 MapBox 符号的位置?
- c# - 回退处理程序无法加载库 libc.dll
- c# - 用 1 个附加属性包装对象列表
- fullcalendar - 如何在“fullcalendar”标题部分添加图像?
- jquery - 字符串前两个字符的正则表达式应该是 GE | TE | 西宁 | 助教 | 用户 | BW 和 Next 两个字符应该是 RU |MT | LD
- java - CSV 文件在使用追加功能时不会添加文本
- nosql - 无法在 hbase shell 中创建对象
- vue.js - 有没有办法修复我的两种方式绑定和使用道具传递数据。他们没有被认可
- c++ - 使用未来的wait_for时无法检查成员变量,但如果我在线程中睡眠,它可以工作
- javascript - JavaScript中的0/1和真/假有什么区别