2017-11-12 5 views
0

Ich habe Tabelle mit und wenn Sortierspalte geklickt wird, muss ich warten, dass Sortieren getan, um Datenänderung in Tabelle zu erkennen Ich versuche, aktuellen Text von td in Variable und dann zu speichern in browser.wait zu neuem Text der ersten td vergleichenWarte auf Textänderung in td mit Winkelmesser

waitForTDValueChange(currentValue: string, index: number): void { 
    browser.wait(
     () => element.all(by.css('td[data-header="HEADERNAME"]')) 
     .get(index) 
     .getText() 
     .then((txt) => { 
      return txt !== currentValue; 
     }), 30000); 
} 

hier ist mein Code, aber es wirft Stale Element Reference Exception .. Irgendwelche Ideen?

Antwort

0

Vielleicht könnten Sie die locator cssContainingText() zusammen mit Expected Condition stalenessOf oder check for indexOf !== 0 verwenden.

Etwas wie folgt aus:

var EC = protractor.ExpectedConditions; 
//or "global.EC = protractor.ExpectedConditions;" in conf.js to have it globally available 
waitForTDValueChange = function(currentValue, index){ 
    var list = element.all(by.css('td[data-header="HEADERNAME"]')); 
    var el = element(by.cssContainingText('td[data-header="HEADERNAME"]', currentValue)) 
    //idea 1 - not sure, if it only works, when el disappears, so position change might not be sufficient 
    browser.wait(EC.stalenessOf(el), 5000); 
    //idea 2 - get index of current element until it's not on index = 0 anymore 
    browser.wait(list.indexOf(el) !== 0, 5000); 
};