Javascript 延迟升压量角器

Javascript 延迟升压量角器,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,我正在尝试为我们的angular应用程序设置端到端测试,但遇到了一些障碍 一个是自举。我们正在使用这个库:引导我们的应用程序。这个库允许我们进行http调用,然后将调用结果注入到我们的应用程序中(如angularvalue())。然后,它调用bootstrap函数以实际使用angular引导应用程序。我希望测试在这个增强完成后运行 这就是我到目前为止所做的 describe('navigation should', function () { beforeEach(function ()

我正在尝试为我们的angular应用程序设置端到端测试,但遇到了一些障碍

一个是自举。我们正在使用这个库:引导我们的应用程序。这个库允许我们进行http调用,然后将调用结果注入到我们的应用程序中(如angular
value()
)。然后,它调用
bootstrap
函数以实际使用angular引导应用程序。我希望测试在这个增强完成后运行

这就是我到目前为止所做的

describe('navigation should', function () {
    beforeEach(function () {
        // load homepage
        browser.get('/');
    }, 10000);

    it('show side navigation', function () {
        browser.wait(function () {
            var deferred = protractor.promise.defer();

            element(by.css('body.deferred-bootstrap-loading')).isPresent()
                .then(function (isPresent) {
                    deferred.fulfill(!isPresent);
                });

            return deferred.promise;
        });
    });
});
库方便地将
延迟引导加载
类放在
主体上
。我正在等待,直到这是删除

问题是,有时我在等待量角器与页面同步时收到错误
错误:“[ng:test]找不到元素参数可获取性的注入器\nhttp://errors.angularjs.org/1.4.8/ng/test“

它似乎比它(测试)通过更频繁地产生这种错误

我不明白这里有什么问题?量角器在有机会运行之前运行吗

我是否必须以
浏览器的身份在回调中运行所有测试。等待
返回承诺


另外,我希望在每次测试中都运行此代码(等待引导完成)。组织此操作的最佳方法是什么?

我将尝试关闭同步,直到满足预期条件:


另外,我希望在每次测试中都运行此代码(等待引导完成)。最好的组织方式是什么

请参阅:


当您使用手动/半手动引导机制时,我不会使用
browser.get()
,因为这会等待Angular加载。改为使用
browser.driver.get()
并在
延迟引导加载
类上添加等待。从角度看

因此,类似于以下内容的内容应该可以起到作用:

describe('navigation should', function () {
    beforeEach(function (done) {
        // load homepage
        browser.driver.get('/');
        browser.driver.wait(function () {
            return browser.driver.isElementPresent(by.class('body.deferred-bootstrap-loading'))
                .then(function (el) {
                    return el === false;
                });
        }).then(done);
    }, 10000);

    it('show side navigation', function () {
        // normal test here
    });
});
我还没有测试过上面的内容,但你应该了解情况。
通过使beforeach async并等待类从
主体
标记中消失,当您运行
it
块时,您可以期望一切都在运行。

先生,您应该得到一个拥抱
describe('navigation should', function () {
    beforeEach(function (done) {
        // load homepage
        browser.driver.get('/');
        browser.driver.wait(function () {
            return browser.driver.isElementPresent(by.class('body.deferred-bootstrap-loading'))
                .then(function (el) {
                    return el === false;
                });
        }).then(done);
    }, 10000);

    it('show side navigation', function () {
        // normal test here
    });
});