/ / Protractor browser.get () nečaká na aplikáciu angular5 - uhlový, webový selén selénu, uhlomer

Protractor browser.get () nečaká na aplikáciu angular5 - uhlový, selén-webový ovládač, uhlomer

Zdrojový kód uhlopriečok na: https://github.com/angular/protractor/blob/master/lib/browser.ts

Zistíte, že broswer.get () pred vyriešením čaká, až angular1 dokončí bootovanie. Pre uhlové 2+ však nie je implementácia:

        .then((angularVersion) => {
// Load Angular Mocks
if (angularVersion === 1) {
// At this point, Angular will pause for us until angular.resumeBootstrap is called.
let moduleNames: string[] = [];
let modulePromise: wdpromise.Promise<void> = wdpromise.when(null);
for (const {name, script, args} of this.mockModules_) {
moduleNames.push(name);
let executeScriptArgs = [script, msg("add mock module " + name), ...args];
modulePromise = modulePromise.then(
() => this.executeScriptWithDescription.apply(this, executeScriptArgs)
.then(null, (err: Error) => {
throw new Error(
"Error while running module script " + name + ": " + err.message);
}));
}

return modulePromise.then(
() => this.executeScriptWithDescription(
"window.__TESTABILITY__NG1_APP_ROOT_INJECTOR__ = " +
"angular.resumeBootstrap(arguments[0]);",
msg("resume bootstrap"), moduleNames));
} else {
// TODO: support mock modules in Angular2. For now, error if someone
// has tried to use one.
if (this.mockModules_.length > 1) {
throw "Trying to load mock modules on an Angular v2+ app is not yet supported.";
}
}

Otázka, ktorú kladiem, je: Ako vie uhlopriečka stránku (angular5) dokončiť načítanie pred vyriešením sľubu? Ako inak môžem zaistiť, aby sa načítanie stránky dokončilo, aby v mojich testoch e2e existovala určitá súdržnosť.

(Používam await / async a zakázal som kontrolný tok, ako je uvedené tu: https://github.com/angular/protractor/blob/master/docs/control-flow.md , ale pretože sľub sa vyrieši bez kontroly zavádzania systému, môžem čakať všetko, čo chcem, vždy to bude problém časovania)

odpovede:

0 pre odpoveď č. 1

Skontrolujte uhlopriečky Očakávané podmienky

Môžete ich použiť s browser.wait () po tom, čo váš browser.get () prinúti uhlopriečku počkať, kým sa nesplnia definované podmienky.

Napríklad:

var EC = protractor.ExpectedConditions;
var timeout = 15000;
browser.get(yourUrl);
browser.wait(EC.presenceOf(yourElement),timeout)

Prejde to na vašu webovú adresu a pred pokračovaním počkajte, kým nebude zadaný prvok prítomný, alebo vyprší časový limit po 15 000 ms (15 s)