Вы должны использовать .stalenessOf()
, чтобы подождать, пока элемент больше не будет присоединен к DOM.
Примерно так (настроить ваш случай):
WebElement somePageElement = driver.findElement(By.id("someId"));
WebDriverWait wait = new WebDriverWait(webDriver, 10);
// do something that changes state of somePageElement
wait.until(ExpectedConditions.stalenessOf(somePageElement));
И хорошодело в том, что вам не нужно обрабатывать какие-либо исключения.
Кроме того, вы также можете создать метод и обрабатывать исключения следующим образом:
public static void WaitForCommission (WebDriver driver) throws Exception {
for (int second = 0; second++) {
if (second >= 30) fail("timeout");
try {
if (IsElementActive(By.id("someElementID"), driver))
break;
} catch (Exception e) {}
Thread.sleep(1000);
}
}
private static boolean IsElementActive(By id, WebDriver driver) {
WebElement we = driver.findElement(id);
if(we.isEnabled())
return true;
return false;
}