2017-06-02 8 views
0

Haben Sie eine Frage für Sie Jungs. Ich versuche Streams und Automation mit Selenium zu verwenden. Ich habe List<WebElement> getAllButtons; // in dieser Liste I 5 Tasten um bekamjava 8 und selen

getAllEditButtons().stream() 
    .limit(2).forEach(webElement -> { 
     webElement.click(); 
     PageUtil.clearInputAndSendKeys(userPassword, password); 
     PageUtil.clearInputAndSendKeys(userReEnterPassword, password); 
     saveClient.click(); 
    }); 

Nach dem ersten Iteration in forEach ich bekam:

"org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document"

Irgendwelche Ideen, wie diese statt Rewrite in einfachen Code zu beheben)

+0

Ich verstehe nicht, Lamda Ausdrücke, o/w ich Sie Sie erneut identifizieren müssen – kushal

+0

geholfen haben könnte:

Um dieses Problem zu überwinden, werden Sie die Web-Elemente wieder finden müssen Listet das Element in jeder Iteration auf, da eine Aktion das Element zum erneuten Laden bringt – kushal

+0

Sie können die Element-Locator-Details wie xpath aus dem Stream abrufen und Ihr Webelement auf avaioid stale aufbauen. –

Antwort

0

Es sieht so aus, als ob Ihre Bearbeitungsschaltflächen nach dem ersten Klick in Ihrer Schleife neu erstellt werden.

Daher sind die von getAllEditButtons() zurückgegebenen Webelemente in der zweiten Iteration nicht mehr vorhanden.

IntStream.range(0, getAllEditButtons().size()) 
    .limit(2) 
    .forEach(i -> 
    getAllEditButtons()[i].click(); 
    ... 
);