首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Cypress不存储全局变量的值吗?

Cypress不存储全局变量的值吗?
EN

Stack Overflow用户
提问于 2021-09-25 21:17:41
回答 1查看 62关注 0票数 0

我有一个像这样的柏树代码。当它运行时,'result 1‘有这个值,而'result 2’没有。我的问题是: cypress只会将值存储在它的块中吗?我如何存储'result 2‘的值?我对柏树是个新手。谢谢你的帮忙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
})
EN

回答 1

Stack Overflow用户

发布于 2021-09-25 22:29:14

这些命令是异步的,因此您需要在// result 2点访问.then()内部。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()返回值,它将被传递。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()中访问的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69332073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文