量角器解除警报如果打开

时间:2014-07-30 15:48:10

标签: javascript selenium webdriver cucumber protractor

我正在使用量角器和黄瓜。对于许多测试,结果是有问题的,并且有时会产生警报框。

我想做的就是在每个测试的开始方法中,检查是否有警报框,然后关闭/关闭它。然后继续。我面临的问题是,我无法保证始终会有一个警告框,如果没有警告框,我会得到NoSuchAlertError: no alert open并且整个脚本都会停止。

有什么方法吗?

当前代码:

try {
  browser.switchTo().alert().dismiss();
}catch(err){

}

4 个答案:

答案 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()。然而,经过几个小时的挫折之后,我很高兴看到一些有用的东西。

来自:https://code.google.com/p/selenium/wiki/WebDriverJs

的异常处理

答案 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) {
}