[英]Break if loop in cypress
我們有一個場景如下
iterate over name elements in the page
if(name.text() == expName)
{
name.click()
exit from if loop
}
else
{
createName()
}
我如何在 cypress 中實現這一點,因為 return false 沒有從 if 循環中退出。 這是我嘗試過的代碼
export function addProtocol(protocolName, protocolStatus) {
let flag = "false";
subject.view({ name: "ProtocolsExplorerList" }).as('currentView');
cy.get('@currentView').find('td textarea').each($el => {
cy.wrap($el).invoke('val').then($value => {
console.log("valueee:" + $value);
if ($value == protocolName) {
cy.get($el).click();
flag = "true";
return false;
}
})
})
if (flag == "false") {
subject.button({ class: "New" }).click();
subject.field("Name").type(protocolName);
subject.field("Status").setCaption(protocolStatus);
save();
cy.contains(protocolName).click();
}
}
請問有什么建議嗎? 謝謝。
問題是您不會從each
回調中返回false
。 您從then
回調中返回false
。 then
回調通常異步運行,這意味着回調在each
完成迭代后執行。
我不熟悉賽普拉斯,但假設他們在 collections 上實現迭代器協議,您可以使用:
const textareas = cy.get('@currentView').find('td textarea');
for (const $el of textareas) {
const $value = await cy.wrap($el).invoke('val');
console.log("valueee:" + $value);
if ($value == protocolName) {
cy.get($el).click();
flag = "true";
break;
}
}
您必須使包裝 function 成為async function
以啟用await
的使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.