2017-09-01 8 views
0

私は、presenceOfElementLocatedを使ってオーバーレイがページロードからクリアされるまで待つことを試みていました。しかし、オーバーレイがなくなったことは決してありませんでした(DOMから削除されました)。私はこれがDOMのstalenessと何か関係があったことを控除することができますか? numberOfElementsToBeは機能しました。それは奇妙に思えますが、DOMを新鮮なものに照会しているならば、全体的に意味があります。presenceOfElementLocatedはStale DOM要素を処理しませんか?

wait = new WebDriverWait(driver, 30); 
wait 
    .withMessage("Loading Overlay never disappeared") 
//this didn't work 
    .until(ExpectedConditions.not(ExpectedConditions.presenceOfElementLocated(By.className("overlay")))); 
//this worked 
    .until(ExpectedConditions.numberOfElementsToBe(By.className("overlay"),0)); 

これは適切にDOMの削除を待っているからあなたを防ぐ古いDOMをテストするためのOKな方法ですか?または、presenceOfElementLocatedチェックを変更する必要がありますか?

答えて

1

あなたが消えるのを待つオーバーレイしたい場合は、以下のようにinvisibilityOfElementLocated条件を実装することができます

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("overlay"))); 
+0

それは存在と同じ問題を抱えていた場合を除き。 Domは要素が削除されたことを認識しません。 – DMart

関連する問題