我有一個按鈕,它有兩種狀態,一種激活,一種停用。通過單擊它,您可以取消/激活驅動程式。我使用 cypress 來測驗這個按鈕,下面是測驗的一部分:
cy.get('button').then(($btn) => {
if ($btn.has('[data-cy="activate-user-account"]')) {
cy.get('[data-cy="activate-user-account"] span').click();
cy.get('.btn-primary > .button-wrapper').click();
cy.get('.btn > .ng-star-inserted svg').click();
}
else {
cy.get('[data-cy="deactivate-user-account"] span').click();
cy.get('.btn-primary > .button-wrapper').click();
cy.get('.btn > .ng-star-inserted svg').click();
}
});
但是它所做的,它只查看 else 并嘗試執行那個,而不考慮 if 部分。我在這里做錯了什么?
我是柏樹的新手,如果這是一個簡單的并且我不知道的,請道歉;)
在此處輸入圖片說明
uj5u.com熱心網友回復:
JQuery has() 函式回傳的不是布林值,而是一個 jquery 物件本身。因此,檢查條件的正確方法如下:
$btn.has('[data-cy="activate-user-account"]').length
這是完整的代碼片段:
cy.get('button').then(($btn) => {
if ($btn.has('[data-cy="activate-user-account"]').length) {
cy.get('[data-cy="activate-user-account"] span').click();
} else {
cy.get('[data-cy="deactivate-user-account"] span').click();
}
cy.get('.btn-primary > .button-wrapper').click();
cy.get('.btn > .ng-star-inserted svg').click();
});
uj5u.com熱心網友回復:
最終下面的代碼有效:
需要通過父元素和容器標簽來尋址元素。當元素被呼叫并且它有一個值時,長度 > 0 也很重要。
上面代碼的問題是它起初找不到元素。這就是為什么它跳過 if 條件并執行 else 的原因。因此,請確保測驗找到確切的元素,然后您可以預期 if 條件將起作用。下面是完整的正確答案。
cy.contains( '{Parent}','{elementLabel}')
.find('[type="button"]')
.then(($btn) => {
if ($btn.find('[data-cy="activate-user-account"]').length > 0 ) {
cy.get('[data-cy="activate-user-account"] span').click();
} else {
cy.get('[data-cy="deactivate-user-account"] span').click();
}
cy.get('.btn-primary > .button-wrapper').click();
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336538.html
上一篇:檢查Php陣列中的一個值是否不同
