使用同级调用时,使用override get命令获取错误

时间:2019-08-23 12:48:00

标签: cypress

美好的一天。 出现错误:

<towername>/api/v2/job_templates/<templ_name>/launch

当使用具有同级包含的重写The command that returned the promise was: > cy.contains() The cy command you invoked inside the promise was: > cy.fixture() 方法时。

覆盖命令代码:

get

使用示例:

Cypress.Commands.overwrite('get', (originalFn, selector, options) => {
    cy.fixture('selectors').then((selectorsJson) => {
        if (selectorsJson.hasOwnProperty(selector)) {
            return originalFn(selectorsJson[selector], options)
        }
        return originalFn(selector, options)
    })
})

1 个答案:

答案 0 :(得分:1)

已经找到了解决方法,但是在每个必需的测试中都需要具有其他逻辑。 (如果使用示例覆盖get命令,则可能不需要此命令。)

我的解决方案:

命令:

Cypress.Commands.overwrite('get', (originalFn, selector, options) => {
    if (options.hasOwnProperty("selectors") && options.selectors.hasOwnProperty(selector)) {
        return originalFn(options.selectors[selector], options)
    }
    return originalFn(selector, options)
})

在测试中:

 beforeEach(function() {
        cy.fixture('selectors').as('selectorsJson');
 })

it('Description', function() {
        cy.visit('/some-url');

        cy.get("someSelectorAlias", {selectors: this.selectorsJson}).contains('Some text').click()
});

**还有一个更简单的解决方案(无覆盖):**

  beforeEach(function() {
        cy.fixture('selectors').as('selectors');
    })
  it('Some tests', function() {
      cy.visit('/someurl');        
cy.get(this.selectors.someKey).should('be.visible').contains('SomeText')
})