Angularjs量角器E2E测试'应用程序已经使用此元素进行自举

时间:2013-12-19 14:38:35

标签: javascript angularjs protractor 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">

普通网站工作正常,没有错误或警告,但是一旦我使用Protractor设置我的测试,就会发生错误。需要注意的是,当我使用angularjs 1.08时测试正在通过,但是当使用1.25

时失败了

测试是这样的:

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('admin@aperture.*************.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( '#/活动');

被调用,错误发生。

我也尝试将登录功能用作量角器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”  由Request =&gt;引起{“headers”:{“Accept”:“application / json,image / png”,“Connection”:“Keep-Alive”,“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”: “/运行”, “urlParsed”:{ “锚”: “”, “查询”: “”, “文件”: “执行”, “目录”: “/”,“路径“:”/执行”, “相对的”: “/执行”, “端口”: “”, “宿主”: “”, “密码”: “”, “用户”: “”, “用户信息”: “” , “权威”: “”, “协议”: “”, “源”: “/执行”, “queryKey”:{}, “块”:[ “执行”]} “urlOriginal”:“/会话/ 64b440e0-68b9-11e3-b92a-e1efe36914bc /执行“} 构建信息:版本:'2.37.0',修订版:'a7c61cb',时间:'2013-10-18 17:14:00' 系统信息:主机:'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'

1 个答案:

答案 0 :(得分:0)

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

希望这有帮助