gpt4 book ai didi

javascript - 具有延迟引导的 Protractor

转载 作者:行者123 更新时间:2023-11-30 16:14:28 25 4
gpt4 key购买 nike

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

一个是自举。我们正在使用这个库:angular-deferred-bootstrap引导我们的应用程序。这个库允许我们进行 http 调用,然后将其结果注入(inject)我们的应用程序(作为 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;
});
});
});

库方便地将 deferred-bootstrap-loading 类放在 body 上。我正在等待,直到它被删除。

问题是有时我在等待 Protractor 与页面同步时收到错误 错误:“[ng:test] 没有找到用于 getTestability 的元素参数的注入(inject)器\nhttp://errors.angularjs.org/1.4.8/ng/测试”

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

我不明白这是什么问题? Protractor 是否在 angular 有机会运行之前运行?

browser.wait 返回 promise 时,我是否必须在回调中运行所有测试?

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

最佳答案

我会尝试做的是关闭同步,直到满足预期条件:

beforeEach(function () {
var EC = protractor.ExpectedConditions;

browser.ignoreSynchronization = true;
browser.get('/');

// wait for deferred bootstrap body to not be present
var body = $("body.deferred-bootstrap-loading");
browser.wait(EC.stalenessOf(body), 10000).then(function () {
browser.ignoreSynchronization = false;
});
browser.waitForAngular(); // might not be needed
});

Also I would want this code to run for every test (wait for bootstrapping to finish). What is the best way to organize this?

请看:

关于javascript - 具有延迟引导的 Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com