CodeceptJS - 我需要选中一个复选框,前提是它还没有被选中。
我创建了一个辅助方法来检查条件,它返回正确的值,但是 if 语句中的代码没有被执行。
助手类/方法:
class CommonHelper {
async clickIfPresent(elementToCheck, elementToClick, conditionCheck){
try {
const numVisible = await I.grabNumberOfVisibleElements(elementToCheck);
console.info('grab numVisible - ', numVisible, ', conditionCheck - ', conditionCheck);
if (numVisible === conditionCheck) {
console.info('elementToClick inside if - ', elementToClick);
I.click(elementToClick);
I.wait(2);
}
} catch (err) {
console.log('Skipping operation as element is not visible');
}
}
module.exports = new CommonHelper();
方法调用:
Class EnableCheckbox {
const checkboxState = '//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]';
const checkboxTag = '//mat-checkbox[@formcontrolname="chkBxEnabled"]';
enableCheckboxIfPresent(){
commonHelper.clickIfPresent(checkboxState, checkboxTag, 0);
I.seeElement(checkboxState);
}
}
我在 if 语句中看到了 step.before、step.after 的代码,但它没有被执行:
Emitted | step.start (I grab number of visible elements "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]")
CommonHelper: clickIfPresent
I grab number of visible elements "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]"
Emitted | step.passed (I grab number of visible elements "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]")
Emitted | step.finish (I grab number of visible elements "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]")
grab numVisible - 0 , conditionCheck - 0
elementToClick inside if - //mat-checkbox[@formcontrolname="chkBxEnabled"]
Emitted | step.before (I click "//mat-checkbox[@formcontrolname="chkBxEnabled"]")
Emitted | step.after (I click "//mat-checkbox[@formcontrolname="chkBxEnabled"]")
Emitted | step.before (I wait 2)
Emitted | step.after (I wait 2)
Emitted | step.start (I see element "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]")
EnableCheckbox: enableCheckboxIfPresent
I see element "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]"
› [SmartWait (20000ms)] Locating //mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"] in 20000
[1] Error | Error: Element "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]" was not found by text|CSS|XPath
Emitted | step.failed (I see element "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]")
Emitted | step.finish (I see element "//mat-checkbox[@formcontrolname="chkBxEnabled"]//input[@aria-checked="true"]")
我在这里错过了什么吗?或者有没有其他方法可以做到这一点?蒂亚!