如何使用nodejs webdriver(wd)检查警报是否打开

时间:2014-01-22 11:02:53

标签: javascript node.js selenium remotewebdriver

我正在努力写一个测试;我想在其中检查警报是否存在,检查其文本是否存在并接受它。

我检查了How to wait for an alert in Selenium webdriver ?How to check if an alert exists using WebDriver?selenium 2.4.0, how to check for presence of an alert,但我无法使用https://github.com/admc/wd

进行调整

我写了一些东西

browser.alertText(function (err, text) {
  if (text) {
    browser.acceptAlert(function () {
      // ...
    });
  }
});

显示警报时效果非常好,但在没有警报窗口时alertText挂起。

如何在发出alertText之前检查警报是否存在?

感谢您的帮助,

2 个答案:

答案 0 :(得分:7)

这可能会有所帮助 - 这就是我使用Selenium Webdriver为node.js检测警报的方法:

var webdriver = require('selenium-webdriver');

var url = "http://web-page-to-test-for-alert";

driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.chrome()).
    build();

driver.get(url);

driver.switchTo().alert().then(
  function() {
    console.log("alert detected");
  },
  function() {
    console.log("no alert detected");
  }
);

driver.quit(); 

'然后'与承诺相关:然后(成功,失败)

这也可能有所帮助 - 这就是我忽略页面上出现的任何警报的方式:

function ignoreAlert(driver) {
  // detect and accept any alert
  driver.switchTo().alert().then(function() {
    driver.switchTo().alert().accept();}, 
    function(){});
}

答案 1 :(得分:0)

如果您要导航到非角度应用,请务必设置ignoreSynchronization:

browser.ignoreSynchronization = true;
browser.get(url);
browser.switchTo().alert().then(function() {
    browser.switchTo().alert().accept();
}, function(){});
browser.ignoreSynchronization = false;