从cypress上的cy.wait请求获取数据。Javascript变量范围

从cypress上的cy.wait请求获取数据。Javascript变量范围,javascript,cypress,Javascript,Cypress,我相信这是个愚蠢的问题?看来做起来应该很容易,哈哈 cy.wait(['@purchase']).then((interception) => { contractId = interception[0].request.body.contract; }); 如何从外部访问压缩变量“.then”?我应该如何定义它?我不太懂javascript。现在它说“construcd没有定义”您需要先定义它 let收缩; cy.wait(['@purchase'])。然后((拦截)=>{ c

我相信这是个愚蠢的问题?看来做起来应该很容易,哈哈

cy.wait(['@purchase']).then((interception) => {
    contractId = interception[0].request.body.contract;
});

如何从外部访问压缩变量“.then”?我应该如何定义它?我不太懂javascript。现在它说“construcd没有定义”

您需要先定义它

let收缩;
cy.wait(['@purchase'])。然后((拦截)=>{
construcd=interception[0]。request.body.contract;//调用了“closure”
});
但是你想用它做什么呢?Cypress喜欢“链接”东西,所以你可以从
回调返回它。然后()
回调使用它

cy.wait(['@purchase'])。然后((拦截)=>{
const constract=interception[0]。request.body.contract;
回归收缩;
})
.should('not.eq',0);//传递压缩
因此,访问合同

cy.wait(['@purchase'])。然后((拦截)=>{
const constract=interception[0]。request.body.contract;
回归收缩;
}).然后(coontracid=>{
cy.visit(Cypress.env('baseUrl')+“/contracts/”+contractd)
})

cy.wait(['@purchase'])。然后((拦截)=>{
const constract=interception[0]。request.body.contract;
cy.visit(Cypress.env('baseUrl')+“/contracts/”+contractd);
})
使用别名(在同一测试中,因为别名在测试之间被清除)

cy.wait(['@purchase'])。然后((拦截)=>{
const constract=interception[0]。request.body.contract;
回归收缩;
})
.as(“收缩”);
//在使用Compractid之前,请再添加一些内容。。。
cy.get('@construcd')。然后(construcd=>{
cy.visit(Cypress.env('baseUrl')+“/contracts/”+contractd);
})

我想用它将浏览器定位到创建的合同中,比如:cy.visit(“+construcd”),我明白了,所以我第一次做的很好,但出于某种原因,控制台只是给了我“未定义的”“在开始时,而不是收缩。是的,问题是我不想在那一步做,我必须先检查许多其他事情。这就是为什么我认为我需要保存变量。或者Cypress给你别名,可以保留值,会添加一个例子。就是这样!太好了,谢谢史蒂夫!