我有一个使用 angular-strap 模态的登录对话框,它被调用:
scope.authModal = $modal({
template: '/components/login/login.html',
show: false,
scope: scope,
backdrop: 'static'
});
(该代码位于登录指令的链接函数内。)
现在,我的 Protractor 代码如下所示:
it('should perform login properly', function () {
browser.manage().deleteAllCookies();
element(by.model('login.username')).sendKeys('xy123');
element(by.model('login.password')).sendKeys('abz89');
element(by.binding("guiText.loginButton")).click();
browser.waitForAngular();
expect(element(by.id('login.username')).isPresent()).to.eventually.equal(false);
});
在上面的另一个测试中,element(by.id('login.username')).isPresent()
已被证明在登录对话框可见时为真。
问题是,我在该测试中遇到了错误:超过 10000 毫秒的超时
。在浏览器中,我可以看到,凭据输入正确并且按钮被单击。登录模式消失,然后什么也没有发生,浏览器在等待 10 秒后最终进入超时异常。
最佳答案
我遇到了同样的问题,我按照下面的方法解决了这个问题。
在您的帮助程序文件中编写此函数,并在您的代码中调用此函数以单击登录按钮。尝试通过 Id 访问按钮,然后在此函数中传递 id,如果不是 id,则根据您的需要更新函数
var clickAndWait= function (btnId) {
var returnVal = false;
browser.wait(function () {
if (!returnVal) {
element(by.id(btnId)).click().then(function () {
returnVal = true;
});
}
return returnVal;
}, 30000);
};
关于javascript - 使用 Protractor 和 Angular 带模态测试登录对话框时出现超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620082/