如何解决除了 try catch 或 promise reject 之外,有没有办法处理量角器的预期条件
我正在使用量角器和 async/await 模式自动执行 Web 测试。
问题是,当它出现时,我想点击它。
有没有办法等待这个元素,如果出现我点击它,如果没有,我点击其他东西然后继续我的操作而不使用 try/catch 块
Si 应该是这样的(请注意,这是假设的):
/*This will click on the toggle that might trigger the extra element to appear*/
await this.toggle.click()
const isExtraElementPresent = await browser.wait(ExpectedConditions.presenceOf(extraElement),2000);
if (isExtraElementPresent ){
await extraElement.click();
}
我现在正在做的是:
await this.toggle.click();
try {
await this.extraElement.click();
}
catch (error) {
await console.log("Extra element didn't appear.");
}
解决方法
try/catch
是处理这种情况的唯一方法。
try {
// wait for the element
} catch (error) {
// do whatever if the element is not present
}
但是,你应该考虑避免它,原因如下
你的逻辑如下
- 登录
- 等待可能不存在的元素 2 秒
- 尝试点击
您的第二个项目在大多数登录尝试中需要 2 秒,通常情况下几乎是 browser.sleep
应该遵循的正确模式是这样的
var EC = protractor.ExpectedConditions;
var welcomeMessagePresent = EC.presenceOf(welcomeMessageElement);
var firstLoginPopupPresent = EC.presenceOf(firstLoginPopup);
// Waits for either condition
await browser.wait(
EC.or(welcomeMessagePresent,firstLoginPopupPresent),5000,'neither condition satisfied'
);
所以它会等待条件之一。并且可以有任意数量的条件 - 1,2,3 ...在您的情况下,它是条件之一
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。