【问题标题】:Cypress. cy.type({enter} fails intermittently柏。 cy.type({enter} 间歇性失败
【发布时间】:2019-08-22 18:39:02
【问题描述】:

我正在使用赛普拉斯的网络应用程序上运行 e2e 测试。

此部分间歇性失败。

在这里,在适当的字段中输入搜索文本。当点击 {enter} 时,搜索发生并且对话框只显示搜索结果。

代码如下:

  function selectDesign(designName: string, designCode: string) {

  // enter search text & click enter

  cy.get(singlePickerSearch).type(designName + '{enter}', { force: true });

  // select your design from search results

  cy.get(designPickerDesign(designCode))
    .scrollIntoView()
    .should('have.length', 1)
    .click({ force: true });
}

当它失败时,就像'{enter}'没有被执行。我可以手动点击回车,就可以了。

因为是间歇性故障,所以很难获取日志。

每个测试都使用相同的设计。在一次运行中,有 19 个测试。测试运行者可以找到文件 18 次,然后在 1 次测试中失败。

还尝试在 .type() 命令中使用反引号:

cy.get(singlePickerSearch)
  .clear()
  .type(`${designName}{enter}`);

没有明显改善。

【问题讨论】:

  • 请注意这意味着什么 - “它适用于以 'A' 开头的项目。当我们到达 'S' 时,结果变得不稳定。”。另外,如果您可以在看到任何错误时添加一些控制台日志,那就太好了。
  • @Kondasamy Jayaraman - 这个特别的怀疑被证明是不真实的,所以我已经从这个问题的描述中删除了它。

标签: cypress


【解决方案1】:

我终于通过以下方式完成了这项工作:

 function selectDesign(e2eDesign: any) {
//  open dodi picker
cy.get(createCardQueryOpenDodiPicker)
  .should('be.visible')
  .click()
  .then(() => {
    // wait for loader
    cy.get(loader).should('not.be.visible');
    // enter search text
    cy.get(dodiPickerSearchText)
      .clear()
      .type(`${e2eDesign.design.name}{enter}`)
      .then(() => {
        // wait for loader to go
        cy.get(loader).should('not.be.visible');
        // short wait to avoid intermittent failure here
        cy.wait(400);
        // select required design
        cy.get(dodiPickerItems)
          .should('have.length', 1) // should only be one match
          .click();
      });
  });

}

我认为最后一个 .should('have.length' 1) 导致它在尝试执行下一条语句之前等到它为真。

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多