这是我的代码打印总量-长度的元素产品:
cy.fixture('searchProducts').then(function (arr) {
let arrProducts = [];
let totals ;
let totalGetJson;
arr.forEach(($product) => {
if ($product.nameProduct == "dress") {
arrProducts = $product;
totalGetJson= $product.total
productsPage.getProductList.as('listProduct')
}
});
totals = cy.get('@listProduct').then(($elements) => {
expect(totalGetJson).to.eq($elements.length)
return $elements.length
})
//print [object Object]aaaaaaaaaaaaaaa
cy.log(totals +"aaaaaaaaaaaaaaa")
return totals
})
.then((totals) => {
// print null
cy.log(totals)
});
当我把cy.log(totals +“aaaaaaaaaaaaaaaaa”)放在return totals之前,然后把cy.log(totals)放在块中时,则()为空
如果我删除代码块中cy.log(totals +“aaaaaaaaaaaaaaa”)行,那么cy.log(totals)()就是$个元素,长度是9
我不明白在Cypress中使用Javascript的方式
请给我解释一下,我真的懂了,谢谢
2条答案
按热度按时间pbpqsu0x1#
回调的内容中包含一些异步命令,因此也需要异步处理返回值。
下面是使用Cypress
example.json
和公共站点example.com的三个版本的类似代码。同步then()回调
异步then()回调
带异步结果处理的异步then()回调
kjthegm62#
将一个cypress链调用分配到一个变量中是一个糟糕的做法。Cypress似乎不支持多个“active”命令。因此,当您在其间添加一个
log
命令时,Cypress可能会使您的totals
命令无效,因此您以后无法使用它。您可以使用别名来保存命令的结果:我还发现原来的例子似乎在Cypress 9中工作,在Cypress 11中不工作。您使用的是哪个版本?