browser.switchTo()。alert()在量角器中不起作用

时间:2015-01-14 11:10:00

标签: javascript angularjs selenium webdriver protractor

browser.switchTo()。alert()无法在量角器中工作。

示例代码:

browser.get('http://google.com');
browser.switchTo().alert().accept();

消息:

UnexpectedAlertOpenError: unexpected alert open
(Session info: chrome=39.0.2171.95)
(Driver info: chromedriver=2.12.301325 (962dea43ddd90e7e4224a03fa3c36a421281abb7),platform=Windows NT 6.1 SP1 x86_64)
 Stacktrace:
   UnexpectedAlertOpenError: unexpected alert open


C:\Users\Vikas.Gahlaut\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\atoms\error.js:113
  var template = new Error(this.message);
                 ^
UnexpectedAlertOpenError: unexpected alert open

尝试了所有内容,它与chrome驱动程序问题无关,因为它与webdriver-java本机API一起正常工作。

4 个答案:

答案 0 :(得分:4)

除非您设置了ignoreSynchronization,否则您导航到非角度应用(google.com)的事实正在弄乱它。

尝试

browser.driver.get('http://google.com');
browser.switchTo().alert().accept();

browser.ignoreSynchronization = true
browser.get('http://google.com');
browser.switchTo().alert().accept();

答案 1 :(得分:1)

有时警报需要一段时间才能显示,您可以尝试在接受之前添加等待:

browser.ignoreSynchronization = true
browser.get('http://google.com');
browser.wait(protractor.ExpectedConditions.alertIsPresent(), 10000);
browser.switchTo().alert().accept();

答案 2 :(得分:0)

这就是我所做的,所以如果没有打开警报就不会失败:

browser.ignoreSynchronization = true;
browser.get('http://google.com');
browser.switchTo().alert().then(function() {
    browser.switchTo().alert().accept();
}, function(){});
browser.ignoreSynchronization = false;

答案 3 :(得分:0)

    browser.get("your.address.com");

    browser.switchTo().alert().then(function(alert) {
        alert.accept();
    }).catch(function(error) {

    });