2013-12-19 191 views
4

我遇到了一个问题,我的量角器测试总是失败,错误消息“应用程序已经与此元素自举”:Angularjs量角器E2E测试

UnknownError: Error Message => '[ng:btstrpd] App Already Bootstrapped with this Element '<html lang="en" data-ng-app="pmApp" class="js draganddrop no-video no-audio ng-scope">' 

目前Angularjs文档建议的问题是当应用程序被手动自举,而于我而言,这是不是这样,我们只是使用:

<html lang="en" data-ng-app="pmApp"> 

正常的网站工作正常,没有错误或警告,但只要我使用设置我的测试量角器发生错误。要注意,使用1.25

测试时,测试正好路过我用angularjs 1.08的时候,但一直未能像这样:

describe('Campaigns page', function() { 
var ptor; 

beforeEach(function() { 
    // Sets the width of the window, otherwise the default min width 
    // of our site is to small and the login page un-usable 
    browser.driver.manage().window().setSize(1200, 800); 
    ptor = protractor.getInstance(); 

    browser.driver.get(ptor.baseUrl + '/login'); 

    browser.driver.findElement(by.id('user_email')).sendKeys('[email protected]*************.com'); 
    browser.driver.findElement(by.id('user_password')).sendKeys('*************'); 

    browser.driver.findElement(by.css('.button.primary')).click(); 

    browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return (/\/#\/$/.test(url)); 
     }); 
    }); 

    // Now ensure the angular app is loaded and it knows about it 
    browser.get('#/'); 
}); 

it('Should list campaigns on the page', function() { 
    browser.get('#/campaigns'); 

    browser.findElements(by.css('.main-campaign')).then(function(results) { 
     expect(results.length).toBeGreaterThan(0); 
    }); 

}); 

});

*为安全起见,切实删除了实际的登录信息。

只要: browser.get('#/ campaigns');

被调用,错误发生。

我也尝试在量角器conf文件中使用登录功能作为onPrepare,但同样的事情发生。

任何想法或帮助,将不胜感激!

完整堆栈跟踪:

Stacktrace: 
UnknownError: Error Message => '[ng:btstrpd] App Already Bootstrapped with this Element '<html lang="en" data-ng-app="pmApp" class="js draganddrop no-video no-audio ng-scope">' 

http://errors.angularjs.org/1.2.5/ng/btstrpd?p0=%3Chtml%20lang%3D%22en%22%20data-ng-app%3D%22pmApp%22%20class%3D%22js%20draganddrop%20no-video%20no-audio%20ng-scope%22%3E' 引起请求=> { “报头”:{ “接受”: “应用/ JSON,图像/ PNG”, “连接”:“备存─活动“,”Content-Length“:”159“,”Content-Type“:”application/json; charset = utf-8“,”Host“:”localhost:29064“},”httpVersion“:”1.1“ “method”:“POST”,“post”:“{\”args \“:[[]],\”script \“:\”return(function(){\ n //继续引导Angular。\ n angular.resumeBootstrap(arguments [0]); \ n})。apply(null,arguments); \“}”,“url”:“/ execute”,“urlParsed”:{“anchor”:“”, “:””, “文件”: “执行”, “目录”: “/”, “路径”: “/执行”, “相对的”: “/执行”, “端口”: “”, “宿主”: “”, “密码”: “”, “用户”: “”, “用户信息”: “”,“一uthority “:” “ ”协议“: ”“, ”源“: ”/执行“, ”queryKey“:{}, ”块“:[ ”执行“]} ”urlOriginal“:”/会话/ 64b440e0- 68b9-11e3-b92a-e1efe36914bc/execute“} 构建信息:版本:'2.37.0',修订:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:host:' peters-mbp',ip:'192.168.0.3',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10 .9',java.version:'1.6.0_65'

回答

0

昨天我遇到过类似的情况,并且能够通过在每次测试前添加browser.ignoresynchronisation = true来解决此问题。如果您使用resumeBootstrap手动引导您的Angular应用程序,会发生这种情况。我还需要让浏览器休眠一段时间才能看到实际结果。

希望这会有所帮助