javascript - 使用 Protractor 和 Angular 带模态测试登录对话框时出现超时错误

标签 javascript angularjs testing protractor angular-strap

我有一个使用 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/

相关文章:

javascript - 以非阻塞调用 JavaScript 的方式调用 API

javascript - 如何使用innerHTML将从本地存储检索到的对象传递到DOM中?

javascript - 如何从外部访问组件Controller

testing - 尝试测试 laravel/passport auth cicle 时出错

reactjs - 我如何 Jest 测试使用上下文 api 的 react 组件?

javascript - 是否可以将 SVG 图像插入到页面上已渲染的现有 SVG 元素中?

javascript - 如何将 Thymeleaf 对象从基页传递到 ajax 生成的页面?

javascript - 使用angular js验证电话号码

javascript - 嵌套 $http 调用 $q.all 返回 promise 但未解决

python - 测试发布请求时 Django 消息中间件问题