我有一个像这样的柏树代码。当它运行时,'result 1‘有这个值,而'result 2’没有。我的问题是: cypress只会将值存储在它的块中吗?我如何存储'result 2‘的值?我对柏树是个新手。谢谢你的帮忙
it('My function', function()
{
var tkname =''
cy.get('tr:nth-child(1) td:nth-child(3) div div div div p').then(coiname =>
{
tkname = Cypress.$(coiname).text()
//result 1
cy.log(tkname)
})
//result 2
cy.log(tkname)
})
发布于 2021-09-25 22:29:14
这些命令是异步的,因此您需要在// result 2
点访问.then()
内部。
const tkname =''
cy.get('tr:nth-child(1) td:nth-child(3) div div div div p').then(coiname => {
tkname = coiname.text()
//result 1
cy.log(tkname)
})
.then(() => {
//result 2
cy.log(tkname)
})
cy.log(tkname) // this log already used the value of tkname,
// but it's still empty at this point
由于这一要求,所以不需要“全局”变量,您可以从第一个then()
返回值,它将被传递。
cy.get('tr:nth-child(1) td:nth-child(3) div div div div p').then(coiname => {
return coiname.text()
})
.then(tkname => {
cy.log(tkname)
})
Cypress也有别名来设置一种全局值,但它仍然是在.then()
中访问的
cy.get('tr:nth-child(1) td:nth-child(3) div div div div p').then(coiname => {
cy.wrap(coiname.text())
.as('tkname') // alias to use value anywhere in the same test
})
cy.get('@tkname').then(tkname => {
cy.log(tkname)
})
https://stackoverflow.com/questions/69332073
复制相似问题