javascript - 无法在量角器中为属于多个类的元素创建检查条件(使用 else if 条件)
问题描述
有一种情况,我需要对特定元素执行操作(删除或添加)。但是该元素可能属于不同的类,并且根据类,我必须对该元素执行操作。
下面是我的代码片段。
if(class1.isPresent()) {
deleteSpecial.click();
console.log("Class 1 executed");
addSpecialCard.element(addSpecial.locator()).click();
} else if(class2.isPresent()) {
deleteSpecial.click();
console.log("Class 2 executed");
addSpecialCard.element(addSpecial.locator()).click();
} else {
addSpecialCard.element(addSpecial.locator()).click();
console.log("Else executed");
}
好的。所以我试图简单地编写我的代码。下面是简化版。
class3.isDisplayed().then((result) =>{
if(result) {
addSpecialCard.element(addSpecial.locator()).click();
console.log("Class3 executed");
}else {
deleteSpecial.click();
addSpecialCard.element(addSpecial.locator()).click();
}
在 class1 和 class2 的情况下,我需要执行的操作是相同的。所以我唯一需要检查的是元素是否属于class3。如果是,则仅执行添加操作。但如果不是,则执行添加删除操作 1st 然后添加操作。
但是在这个简化的代码中,我的 else 部分也没有执行。它寻找class3。如果找到它将执行if部分。但是如果 class3 不存在,那么它不会执行 else 部分并说找不到元素(即 class3)
这是类的 HTML:
第一类:
<span class="inventory-active-layover active-layover ng-scope">
类2:
<span class="inventory-active-layover inactive-layover ng-scope">
第三类:
<span class="list-edit-link inventory-add-button ng-scope">
问题是所有 3 个类都不会同时出现在 DOM 中。如果元素已添加并处于活动状态,则将在 DOM 中显示 class1。但是如果元素被添加并且它是非活动的,那么在 DOM 类 2 中将被显示。最后,如果没有添加元素,则在 DOM 类中,将显示 3。
解决方案
试试下面的代码
添加一些预期的等待来处理 class3 加载的等待时间。
if(class3.isDisplayed()) {
addSpecialCard.element(addSpecial.locator()).click();
console.log("Class3 executed");
}else {
deleteSpecial.click();
console.log("Class3 Not Found and executed the else part");
addSpecialCard.element(addSpecial.locator()).click();
}
希望对你有帮助。。
推荐阅读
- reactjs - 有没有办法将道具传递给类组件?
- python - Python错误:SystemError:新样式getargs格式但参数不是元组
- java - 使用 Keycloak 为应用程序页面自定义 css
- python - 尝试结合“BadZipFile”异常
- reactjs - 无法设置对象数组 - 打字稿
- jsf - 替换 Primefaces 8 中 SelectOneRadio.java 中已弃用的 selectItems 字段
- java - 骆驼路线不消耗 ActiveMQ 消息
- typescript - 如何使用 TypeScript Partials 测试 AWS Lambda?
- laravel - 尽管 laravel 8 中的代码正确,为什么刀片文件不显示任何内容
- typescript - 如何在 TypeScript 中更改本机窗口对象类型?