测试对element.isDisplayed进行条件操作而停止,并且不显示元素

时间:2019-05-08 15:20:36

标签: typescript protractor cucumber

在测试中,我有条件检查是否显示弹出窗口。如果是这样,则单击取消按钮。但是,如果未显示弹出窗口,则测试会因错误而停止: NoSuchElementError:使用定位器(弹出窗口的定位器)找不到元素

我发现了一个存在相同问题的旧帖子: How to create a condition in protractor for when an element exists or not

但是提到的解决方案对我不起作用。

isDisplayed()给出:NoSuchElementError

elementPresent()给出:超时

我的代码:

el.isDisplayed().then((result) => {
                if (result) {
                    // click cancel
                }
            });

我希望在不显示弹出窗口时继续测试。 但是,如果未显示弹出窗口,那么我会收到错误或超时。

2 个答案:

答案 0 :(得分:0)

如果该元素不存在,则无法检查其可见性。 您可以尝试:

     el.isPresent().then(isPresent => {
        if (isPresent) {
            el.isDisplayed().then(isDisplayed => {
                if (isDisplayed) {
                    cancel.click();
                } else { // so you'll know that it had failed:
                    expect(isDisplayed).toBeTruthy();
                }
                // the rest of the code
            });
        }
        expect(isPresent).toBeTruthy(); // again, so you'll know that it had failed:
        // the rest of the code
    });

现在,我知道这不是最优雅的解决方案,但它应该可以工作。另外,如果取消后还有更多不依赖于此步骤的步骤,并且您希望测试继续进行,而不考虑弹出窗口的可见性,则可以删除expect,但这意味着即使在以下情况下,测试也会通过弹出窗口没有出现,您将无法知道。

答案 1 :(得分:0)

尝试以下一个

if(await el.isPresent() === true) {
        // click cancel
    }