我正在使用量角器和黄瓜。对于许多测试,结果是有问题的,并且有时会产生警报框。
我想做的就是在每个测试的开始方法中,检查是否有警报框,然后关闭/关闭它。然后继续。我面临的问题是,我无法保证始终会有一个警告框,如果没有警告框,我会得到NoSuchAlertError: no alert open
并且整个脚本都会停止。
有什么方法吗?
当前代码:
try {
browser.switchTo().alert().dismiss();
}catch(err){
}
答案 0 :(得分:5)
driver.switchTo().alert().then(
function (alert) { alert.dismiss(); },
function (err) { }
);
这对我有用。如果有警报,它会解除警报,如果不存在则不采取任何措施。
如果您想接受提醒(OK)而不是解雇(取消),请更改dismiss()
accept()
。
答案 1 :(得分:5)
//dismiss "wrong credentials" alert
browser.driver.sleep(2000);
browser.switchTo().alert().accept().then(null, function(e) {
if (e.code !== webdriver.ErrorCode.NO_SUCH_ALERT) {
throw e;
}
});
这在Protractor 2.0中对我有用。我确信有一个更好的解决方案,不涉及使用sleep()。然而,经过几个小时的挫折之后,我很高兴看到一些有用的东西。
的异常处理答案 2 :(得分:1)
尝试覆盖javascript方法以确认对话(如果存在)
window.confirm = function() { return true; }
这个解决方案适用于水豚和黄瓜
答案 3 :(得分:0)
与https://code.google.com/p/selenium/wiki/WebDriverJs一样,您可以尝试使用/ catch来处理警报
try {
driver.switchTo().alert().dismiss();
} catch (NoAlertPresentException ignored) {
}