Cypress 柏树。cy.type({enter})间歇性失败

Cypress 柏树。cy.type({enter})间歇性失败,cypress,Cypress,我正在使用Cypress在web应用程序上运行e2e测试 该部分间歇性故障 这里,在适当的字段中输入搜索文本。单击{enter}时,将进行搜索&对话框仅显示搜索结果 代码如下: function selectDesign(designName: string, designCode: string) { // enter search text & click enter cy.get(singlePickerSearch).type(designName + '{ent

我正在使用Cypress在web应用程序上运行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}”没有执行一样。我可以手动单击enter,它就可以工作了

由于是间歇性故障,很难获取日志

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

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


没有明显的改善。

我最终通过以下方法实现了这一点:

 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)会导致它在尝试执行下一个语句之前等待,直到它为真。

我最终通过使用以下命令实现了这一点:

 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)会导致它在尝试执行下一个语句之前等待,直到该值为真。

请注意这意味着什么—“它适用于以'A'开头的项。当我们到达'S'时,结果会变得不稳定。”。此外,如果您看到任何错误,您可以添加一些控制台日志,那就太好了。@Kondasamy Jayaraman-这一怀疑被证明是不真实的,因此我已将其从该问题的描述中删除。请注意这意味着什么—“它对以“A”开头的项目运行良好。当我们到达“S”时,结果变得不稳定。”。此外,如果您发现任何错误,可以添加一些控制台日志,那就太好了。@Kondasamy Jayaraman-这一怀疑被证明是不真实的,因此我已将其从该问题的描述中删除。