Cypress:如何从自定义命令中获取返回值?(柏树-承诺)

2022-03-13 00:00:00 javascript promise cypress

我正在寻找一种方法来获取自定义Cypress命令返回的返回值。

我当前使用的是Cypress和Cypress-Promise库(https://www.npmjs.com/package/cypress-promise)

目前结果为: LOG1=CAR 1 log2=空

我的错误在哪里?

测试文件:

it('Test 1', async function() {
     const carName = await promisify(cy.set_typeCarName());
     cy.log("log2 = " + carName );
});

模块:

set_typeCarName() {
     let carName = "CAR 1";
     cy.get('#newSiteCityInput').type(carName);
     cy.log("log1 = " + carName);
     return carName;
};

Cypress.Commands.add('set_typeCarName',() => {
    webnewsite.set_typeCarName();
});

解决方案

为此,我使用wrap()返回包含要返回的值的Chainable

模块

function foo() {
  return cy.wrap('foo');
}

Cypress.Commands.add('foo', foo);

测试文件

cy.foo().then(value => console.log(value)); // foo

因为wrap()返回Cypress.Chainable,所以我们可以在命令上调用.then()。传递给wrap()的任何内容都将传递给下一个命令。

另请参阅:Cypress wrap() documentation

相关文章