Jus*_*tin 14 angularjs protractor
我正在为登录页面编写E2E测试.如果登录失败,则会弹出一个警告框,通知用户无效的用户名或密码.登录本身是对Web服务的调用,控制器正在处理回调.当我browser.switchTo().alert();在Protractor中使用时,它会在回调结束之前发生.有没有办法让Protractor等待弹出警报框?
a-b*_*kov 18
我在Protractor测试中使用以下语句解决了类似的任务:
browser.wait(function() {
return browser.switchTo().alert().then(
function() { return true; },
function() { return false; }
);
});
Run Code Online (Sandbox Code Playgroud)
通常,此代码不断尝试切换到警报,直到成功(最后打开警报).更多细节:
"browser.wait"等待被调用的函数返回true.
"browser.switchTo().alert()"尝试切换到打开的警告框,并且成功或失败.
由于"browser.switchTo().警报()"返回一个承诺,那么无论解决的承诺和第一功能运行(返回true),或拒绝,第二个函数运行(返回false).
您现在可以使用ExpectedConditions库,这使代码更具可读性:
function openAndCloseAlert () {
var alertButton = $('#alertbutton');
alertButton.click();
// wait up to 1000ms for alert to pop up.
browser.wait(protractor.ExpectedConditions.alertIsPresent(), 1000);
var alertDialog = browser.switchTo().alert();
expect(alertDialog.getText()).toEqual('Hello');
alertDialog.accept();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5676 次 |
| 最近记录: |