AngularJs应用程序的量角器定位器超时异常

时间:2017-03-06 16:25:02

标签: angularjs timeout protractor

我们正在尝试自动化一个可公开访问的网站,然后点击其中一个链接,但是测试在TimeOut异常时失败,同时将元素定位如下:

From:Task:Protractor.waitForAngular() - Locator:By(link text,MY ACCOUNT) 下面的示例conf和spec文件。 请求有关如何解决此问题的帮助。

conf.js

exports.config = {
                seleniumAddress: 'http://localhost:4444/wd/hub',
                capabilities: {
                                'browserName': 'chrome'
                },             
                specs: ['test.js']
};

test.js

describe('test', function() {

                it('should navigate', function(done) {
                                browser.get('https://ww2.tracfone.com');
                                element(by.linkText('MY ACCOUNT')).click();
                                done();
                });
};

2 个答案:

答案 0 :(得分:2)

我根据您发布的项目设置了一个示例项目,此测试似乎对我有用。我不知道您为什么会收到通常与非页面相关联的超时角度但设置browser.ignoreSynchronization = true有助于解决此错误。

var ec = protractor.ExpectedConditions;
var timeout = 60000;

describe('test', function() {
    it('should navigate', function(done) {

        browser.ignoreSynchronization = true;
        browser.get('https://ww2.tracfone.com')

        var myAccount = element(by.linkText('MY ACCOUNT'));
        browser.wait(ec.visibilityOf(myAccount)).then(function() {
            myAccount.click();
        })
        done();
    });
});

答案 1 :(得分:2)

找到您为webPage看到的问题的根本原因。看起来你的网站不断轮询$ timeout或$ http,Protractor将无限期地等待并暂停。

我已经监控了下面的http流量,看到你的应用频繁轮询,而Protractor只是等待。检查下面的屏幕抓取。(时间线中的绿色标记表示$ http呼叫 - https://ww2.tracfone.com/cgi-bin/tealeaf.pl

enter image description here

有关您看到此错误的原因的详细信息是documented here。好。为此提出了不同的解决方案,有多种解决方法。我将简要介绍替代方案,并留给您选择最佳方案。

  1. IgnoreSynchronization:在browser.ignoreSynchronization之前将此标志 - browser.get()设置为false并继续测试流程,并将其他页面的标志设置为true 查看here

  2. Interval.js:我不是这方面的专家,但你可以探索更多here

  3.   

    对于持续轮询的任何内容,您应该使用$ interval   (在Angular 1.2rc3中介绍)。

    1. 尝试使用不同的timeOut配置,看看您的应用轮询是否会在一段时间后停止

      allScriptsTimeout:120000, getPageTimeout:120000, jasmineNodeOpts:{ defaultTimeoutInterval:120000 }