在测试中,我有条件检查是否显示弹出窗口。如果是这样,则单击取消按钮。但是,如果未显示弹出窗口,则测试会因错误而停止: 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
}
});
我希望在不显示弹出窗口时继续测试。 但是,如果未显示弹出窗口,那么我会收到错误或超时。
答案 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
}