首页 > 解决方案 > 无法在量角器中为属于多个类的元素创建检查条件(使用 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。

标签: javascriptif-statementpromiseprotractorclass-attributes

解决方案


试试下面的代码

添加一些预期的等待来处理 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();
        }

希望对你有帮助。。


推荐阅读