【问题标题】:Protractor-Failed Timed out waitingProtractor-Failed 超时等待
【发布时间】:2018-07-29 07:46:48
【问题描述】:

目前我在这个 e2e 自动化工具(量角器)上遇到问题,我试图设置一个等待元素选项,但我仍然收到以下错误。

失败:等待异步 Angular 任务在 12 秒后完成时超时。这可能是因为当前页面不是 Angular 应用程序。更多详情请查看常见问题解答:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular 在等待带有定位器的元素时 - 定位器:按(css 选择器,#company-code)。 以下任务待处理: - $timeout: function u(){return e.isActivatePage?void t.cancel(s):(s=t(u,o),void i.poll(r).then(function(t){d=t ,e.$broadcast("noti-count-updated",d)}))}

感谢您的 cmets 解决此问题。我尝试的负面情况的代码如下,谢谢

it('After invalid login it should show an error toast', function () {
    browser.get('https:XXXX.com');
    var EC = protractor.ExpectedConditions;
    browser.wait(EC.visibilityOf($('#company-code')))
        .then(function () {
            browser.waitForAngularEnabled(false);
            browser.driver.findElement(by.id('company-code')).sendKeys('ccXXX');
            browser.driver.findElement(by.id('username')).sendKeys('email@domain.com');
            browser.driver.findElement(by.id('password')).sendKeys('wrong password');
            browser.driver.findElement(by.id('signin')).click()

                .then(function () {

                    var EC = protractor.ExpectedConditions;
                    browser.wait(EC.visibilityOf($('.alert-warning')))
                        .then(function () {

                            var myElement = element(by.css('.alert-warning'));
                            expect(myElement.isDisplayed()).toBeTruthy();

                        });
                });
        });
});

});

【问题讨论】:

  • 您的应用程序是否有任何使用 $timeout 的轮询。这可能会导致错误,请尝试使用 $interval。

标签: protractor


【解决方案1】:

目前,browser.waitForAngularEnabled(false); 将仅在 EC.visibilityOf($('#company-code') 之后执行。但它应该在测试开始之前设置。

您应该在protractor.conf.js 文件中的onPrepare() { } 块中写入browser.waitForAngularEnabled(false);

如果您想在一个测试中尝试它,您应该将browser.waitForAngularEnabled(false); 作为it() 块中的第一行。或者您可以将其设置为beforeAll()

同样,我更喜欢将其保存在 onPrepare() { } 的配置文件中

【讨论】:

  • 感谢您的 cmets,我已经尝试了一切准备就绪,只是浏览器重启命令运行良好,顺便问一下您知道如何通过 ng 模型名称跟踪元素吗?
  • 不客气。你能把我的答案标记为正确吗?对于您的下一个问题,最好创建一个新帖子。
  • @olesk 注意,我尝试投票但系统不允许投票,当我获得更多积分时可能会重做..
【解决方案2】:

您应该将以下配置添加到 conf.js 文件中以解决超时问题。

exports.config = {

allScriptsTimeout: 60000,

//Also add jasmine node options.

jasmineNodeOpts: {

    defaultTimeoutInterval: 30000,


},

};

我认为上述解决方案将对此有所帮助。

【讨论】:

  • 它根本没有帮助,因为你只是设置了超时而不是解决作者的问题
  • 嗨,Akash,感谢您指点此提示,但我已经尝试过以下参数 120,000 和 60,000 而不是上面的参数,但问题仍然存在..
  • @akash 当然感谢发帖,我也使用过这个,我还必须创建一些额外的命令来运行测试..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2017-12-18
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 2015-01-28
相关资源
最近更新 更多