我的AngularJS应用程序使用Keycloak进行身份验证。然后它会打开一个窗口提示,要求用户输入域名。
angular.element(document).ready(function () {
var domain;
if (Modernizr.localstorage) {
domain = window.localStorage['com.example.domain'];
}
if (!domain) {
domain = window.prompt("Enter your customer domain:\n\nNote: This has to be entered only once.", "example.com");
if (domain && Modernizr.localstorage) {
window.localStorage['com.example.domain'] = domain;
}
}
如果我使用safari运行我的测试,我可以关闭此提示一次,使用Keycloak登录并且其他所有测试都成功运行。但是在chrome中,每次运行测试时都会打开此提示符。
如何让Chrome关闭此提示并继续登录页面?
我试过
browser.wait(EC.alertIsPresent()).then(function () {
browser.driver.switchTo().alert().then(function (alert) {
alert.accept();
});
});
或
browser.wait(EC.alertIsPresent()).then(function () {
browser.driver.switchTo().alert().then(function (alert) {
alert.accept();
});
});
但我仍然收到意外警告错误
答案 0 :(得分:2)
我不确定您正在运行哪个版本的量角器,但自从2.0以来,浏览器上的时间已经发生变化
"由于WebDriverJS的更改,现在默认等待没有超时 等待0毫秒而不是无限期等待。"
https://github.com/angular/protractor/blob/master/CHANGELOG.md#breaking-changes
您可以尝试不使用.then(),如下所示
browser.wait(EC.alertIsPresent(), 5000);
browser.switchTo().alert().accept();
我也注意到你提到尝试两种不同的东西,但我相信你写了一个错字,因为它们都是一样的。
我试过
browser.wait(EC.alertIsPresent()).then(function () { browser.driver.switchTo().alert().then(function (alert) { alert.accept(); }); });
或
browser.wait(EC.alertIsPresent()).then(function () { browser.driver.switchTo().alert().then(function (alert) { alert.accept(); }); });
但我仍然收到意外警告错误
你提到在Safari中关闭提示一次,是手动还是通过测试?如果是通过测试,您使用的代码是什么