/ / Uhlomer nečaká na načítanie stránky - javascript, asynchrónny, uhlomer

Úhloměr nečaká na načítanie stránky - javascript, asynchrónny, uhlopriečok

Vytvoril som základný test s uhlomerom na kliknutiena prvku a na novej stránke skontrolujte, či daný prvok existuje, ale zdá sa, že Protractor nečaká a spustí tvrdenie hneď po kliknutí, ale predtým, ako sa načíta nová stránka. Element, ktorý hľadám, je k dispozícii na oboch stránkach, takže uhlomer uvidí prvok na starej stránke pred načítaním novej stránky. Môže mi niekto prosím povedať, čo robím zle?

it("should check when new page is loaded", function () {
button.click().then(function (){
return expect(newElement).to.exist;
});

odpovede:

4 pre odpoveď č. 1

Najskôr pridajte do konfiguračného súboru Protractor premennú „getPageTimeout“.

Ak ju ešte nepoužívate. Toto je nastavenie globálneho časového limitu stránky na základe priemerného času načítania stránky v aplikácii.

conf.js

getPageTimeout: 120000,//change it based on your app response time

Ak to nepomôže ani potom, pred kontrolou skutočného prvku, ktorý hľadáte, overte názov nasledujúcej stránky (za predpokladu, že sa líši od predchádzajúcej stránky).

it("should check when new page is loaded", function () {
button.click().then(function (){
browser.getCurrentUrl();
browser.getTitle().then(function (title) {
expect(title).toEqual("Next Page Title");
});
return expect(newElement.isDisplayed()).toBeTruthy();
});

Aj keď to nepomôže, môžete použiť očakávané podmienky. Existuje niekoľko vopred určených podmienok, na ktoré musíte výslovne počkať. V prípade, že chcete počkať na prítomnosť prvku:

var EC = protractor.ExpectedConditions;

var e = element(by.id("xyz"));
browser.wait(EC.presenceOf(e), 10000);

expect(e.isPresent()).toBeTruthy();

0 pre odpoveď č. 2

Môžete použiť nižšie uvedenú metódu v konfiguračnom súbore

jasmineNodeOpts: {

showColors: pravda,

includeStackTrace: true,

defaultTimeoutInterval: 1440000

},

A v súbore Spec môžete prispôsobiť dobu čakania podľa viditeľnosti stránky a objektu

browser.sleep (20000);

Dúfam, že vyššie uvedená metóda bude fungovať dobre vo všetkých prípadoch, ak správne nastavíte čas čakania.