我正在用 Protractor 测试我的 Angular 应用程序。我浏览了文档,但找不到任何获取警报文本的方法。它本身不是 DOM 中的元素(至少,我无法弄清楚;当出现警报时,Chrome 的检查器将不允许您检查它)。我将如何测试警报是否包含正确的消息?甚至,那个存在?
编辑
这是我的代码。HTML:
<button id='alertButton' data-ng-click='ngAlert()'>Button</button>
JS:
$scope.ngAlert = function(){
window.alert('Hello');
};
量角器规格:
describe('alert', function(){
var ptor = protractor.getInstance();
beforeEach(function(){
button = $('#alertButton');
button.click();
});
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
});
当我对按钮文本做出这样的断言时:
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
它通过了。但是,如果我尝试阅读这样的警报:
it('tells the alert message', function(){
var alertDialog = ptor.switchTo().alert();
expect(alertDialog.getText()).toEqual('Hello');
});
我收到此错误:
$ protractor spec/e2e/conf.js 在 http://localhost:4444/wd/hub .F使用 selenium 服务器
失败:
1) alert 告诉警报消息 Message: NoSuchAlertError: no alert open (Session info: chrome=30.0.1599.101) (Driver info: chromedriver=2.2,platform=Mac OS X 10.9.0 x86_64) (WARNING: The server did not provide任何堆栈跟踪信息)命令持续时间或超时:3毫秒构建信息:版本:'2.35.0',修订:'c916b9d',时间:'2013-08-12 15:42:01'系统信息:os.name:' Mac OS X', os.arch: 'x86_64', os.version: '10.9', java.version: '1.6.0_65' 会话 ID: edbaa752eb14ad45f7e961903b69a466 驱动程序信息: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform =MAC,acceptSslCerts=true,javascriptEnabled=true,browserName=chrome,chrome={chromedriverVersion=2.2},rotatable=false,locationContextEnabled=true,版本=30.0.1599.101,cssSelectorsEnabled=true,databaseEnabled=true,handlesAlerts=true,browserConnectionEnabled=false,nativeEvents=true,webStorageEnabled=true,applicationCacheEnabled=false,takeScreenshot=true}]
在 2.125 秒内完成 2 个测试,2 个断言,1 个失败
/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1542 抛出错误;^ NoSuchAlertError:没有打开警报
但是我在页面上测试过,它可以工作,并且测试可以清楚地找到DOM中的按钮。所以要么该click()
功能不起作用,要么发生了其他事情?