[英]Break for loop inside promise Then in Cypress Typescript
[英]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.