Я не совсем знаком с синтаксисом Java, но я дам вам PHP код, и вы можете написать аналогичными , Идея состоит в том, чтобы найти элемент HTML по тегу и получить его идентификатор ДО ТОГО, ЧТОБЫ ВЫБРАТЬ. Затем ПОСЛЕ CLICK дождитесь изменения идентификатора.
Это выглядит следующим образом:
class MySeleniumCondition extends WebDriverExpectedCondition{
public static function htmlElementIdIsNot($htmlElementId) {
return new WebDriverExpectedCondition(
function ($driver) use ($htmlElementId) {
$htmlElement = $driver->findElement(WebDriverBy::tagName('html'));
return $htmlElementId != $htmlElement->getId();
}
);
}
}
// .............. somehere in a class:
public function waitForNewPage($oldHtmlElementId, $time = 10){
try{
$this->driver->wait($time)->until(
MySeleniumCondition::htmlElementIdIsNot(
$oldHtmlElementId
)
);
return true;
}catch(TimeOutException $e){
return false;
}
}
// use this only when you are sure the page will reload
public function clickAndWait(WebDriverBy $locator, $time = 10){
$webElement = $this->driver->findElement($locator);
$oldHtmlElement = $driver->findElement(WebDriverBy::tagName('html'));
$oldHtmlElementId = $oldHtmlElement->getId();
$webElement->click();
$this->waitForNewPage($oldHtmlElementId, $time);
return true;
}
проверить это - http://stackoverflow.com/questions/11736027/webdriver-wait-for-element – Ievgen