Cypress.$('abc').text() returns 未定义
Cypress.$('abc').text() returns undefined
我正在尝试使用赛普拉斯查找元素的文本。$
一切都适用于 cy 对象,但 Cypress.$ 产生 undefined
//这个有效
cy.get('abc').eq(0).find('xyz').then(($elm)=>{
cy.log("$elm="+$elm.text())
})
//这会产生“未定义”
var elmText = Cypress.$('abc').eq(0).find('xyz').text()
cy.log(elmText)
有人可以帮助解释为什么 Cypress.$ 在这里不起作用吗??
我只能猜测您有一些 cypress 命令必须在查询选择器之前完成。由于 cypress 命令是异步的,因此在执行 jquery 时,您的 UI 状态尚未就绪。
因此,您可以使其与 cypress 命令同步执行,如下所示:
cy.then(() => {
var elmText = Cypress.$('abc').eq(0).find('xyz').text()
cy.log(elmText)
})
@MikhailBolotov 是正确的,像 Cypress.$
这样的同步代码在与命令相同的块中首先运行。
试试这个简单的访问和标题检查。
it('asynchronous commands', () => {
cy.visit('http://example.com')
.then(() => console.log('After visit'))
var elmText = Cypress.$('h1').text()
cy.log(elmText)
console.log('At end of test')
})
console.logs的顺序是
- 测试结束时
- 参观后
除了@MikhailBolotov 的建议,您还可以使用 beforeEach
之类的钩子来分解块并实现您想要的。
beforeEach(() => {
cy.visit('http://example.com')
.then(() => console.log('After visit'))
})
it('asynchronous commands', () => {
var elmText = Cypress.$('h1').text()
cy.log(elmText)
console.log('At end of test')
})
console.logs 的顺序现在正确了
- 参观后
- 测试结束时
我正在尝试使用赛普拉斯查找元素的文本。$ 一切都适用于 cy 对象,但 Cypress.$ 产生 undefined
//这个有效
cy.get('abc').eq(0).find('xyz').then(($elm)=>{
cy.log("$elm="+$elm.text())
})
//这会产生“未定义”
var elmText = Cypress.$('abc').eq(0).find('xyz').text()
cy.log(elmText)
有人可以帮助解释为什么 Cypress.$ 在这里不起作用吗??
我只能猜测您有一些 cypress 命令必须在查询选择器之前完成。由于 cypress 命令是异步的,因此在执行 jquery 时,您的 UI 状态尚未就绪。 因此,您可以使其与 cypress 命令同步执行,如下所示:
cy.then(() => {
var elmText = Cypress.$('abc').eq(0).find('xyz').text()
cy.log(elmText)
})
@MikhailBolotov 是正确的,像 Cypress.$
这样的同步代码在与命令相同的块中首先运行。
试试这个简单的访问和标题检查。
it('asynchronous commands', () => {
cy.visit('http://example.com')
.then(() => console.log('After visit'))
var elmText = Cypress.$('h1').text()
cy.log(elmText)
console.log('At end of test')
})
console.logs的顺序是
- 测试结束时
- 参观后
除了@MikhailBolotov 的建议,您还可以使用 beforeEach
之类的钩子来分解块并实现您想要的。
beforeEach(() => {
cy.visit('http://example.com')
.then(() => console.log('After visit'))
})
it('asynchronous commands', () => {
var elmText = Cypress.$('h1').text()
cy.log(elmText)
console.log('At end of test')
})
console.logs 的顺序现在正确了
- 参观后
- 测试结束时