簡體   English   中英

Cypress:每個都有內部承諾 - 中斷循環

[英]Cypress: each with internal promise - break loop

我正在使用 Cypress,我想從包含承諾的 each 循環中退出。

cy.get('div').find('div.myclass').each(el => {
    cy.get(el).find('span#myclass').then(span => {
        const myText = Cypress.$(span).clone().children().remove().end().text().trim();
        if (myText === 'somethings') {                
            cy.get(el).as('mySection');
            // ### HERE I WANT TO EXIT ###
        }
    });
});

有人能幫我嗎?

您可以return false以提前中斷,請參閱文檔

早點回來
您可以通過在回調函數中返回 false 來提前停止 .each() 循環。

柏樹小提琴測試

const selectMySection = {
  html: `
    <div class="myclass">
      <span id="myid">
        <p>child of span1</p>
        <p>child of span2</p>
        span text - find this
      </span>
    </div>
    <div class="myclass">
      <span id="myid">
        <p>child of span3</p>
        <p>child of span4</p>
        span text - ignore this
      </span>
    </div>
  `,
  test: `
    cy.get('div.myclass span#myid')
      .each(($span, i) => {
        console.log('processing span #', i); // only logs 'processing span # 0'
        const text = Cypress.$($span).text()
        if (text.includes('span text - find this')) {
          cy.wrap($span)
            .parent('div.myclass')  // move to parent
            .as('mySection')
          return false;
        }
      })

    cy.get('@mySection')
      .then(x => console.log(x))
  `
}
it('test selectMySection', () => {
  cy.runExample(selectMySection)
})

循環的替代方法是使用.contains('my text')來定位您想要的文本。
請注意, .contains()進行部分匹配,因此您可以忽略子文本。

cy.get('div.myclass span#myid')
  .contains('span text - find this')
  .as('mySection')

只需在最后添加return false退出該功能。

cy.get('div').find('div.myclass').each(el => {
  cy.get(el).find('span#myclass').then(span => {
    const myText = Cypress.$(span).clone().children().remove().end().text().trim();
    if (myText === 'somethings') {
      cy.get(el).as('mySection')
      return false
    }
  })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM