2017-06-02 9 views
0

yaみんなに質問があります。私はセレンでストリームとオートメーションを使用しようとしています。java 8 and selenium

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

任意のアイデアをどのように簡単なコードでは、この代わりの書き換えを修正する: 私は//私が得た私はforEachの中で最初の反復の後に約5つのボタン

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

ました。このリストにList<WebElement> getAllButtons;を得ました)

+0

私はあなたが再確認する必要が – kushal

+0

あなたを助けていたかもしれないのw/oを私は、ラムダ式を理解していませんその要素が再びロードされるため、各反復で要素をリストします。 – kushal

+0

ストリームからxpathなどの要素ロケータの詳細を取得して、失効するようにWeb要素を構築できます。 –

答えて

0

ループ内の最初のクリック後に編集ボタンが再作成されたようです。

したがって、によって返されたWeb要素は、2番目の繰り返しではもう存在しません。この問題を克服するために

、もう一度ウェブの要素を見つける必要があります:

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