2017-09-01 23 views
0

我正在嘗試等待使用presenceOfElementLocated從頁面加載清除覆蓋。然而,它從未檢測到疊加層已經消失(從DOM中刪除)。我只能推斷這與DOM過時有關嗎? numberOfElementsToBe確實有效。這看起來很奇怪,但是如果它查詢DOM新鮮的話,總是有意義的。presenceOfElementLocated是否不處理陳舊的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刪除嗎?或者我是否需要更改我的presenceOfElementLocated檢查?

回答

1

如果你想等待覆蓋消失,可以實現如下invisibilityOfElementLocated條件:

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

除非它有同樣的問題存在。 Dom沒有意識到元素已被刪除。 – DMart