Рекомендуется не использовать явные и неявные ожидания одновременно, подробнее см. здесь .
Для закрытия всплывающего окна вы можете попытаться нажать, используя JavaScript или подождать, пока popUpClose
не будет активным.
JavascriptExecutor js = (JavascriptExecutor) driver;
driver.findElement(sendButton).click();
List<WebElement> elements = waitElements(driver, 5, By.className("button-resultdown"));
if (elements.size() == 0){
List<WebElement> popUpCloseButtons = driver.findElements(popUpClose);
System.out.println("Popup Close Buttons size: " + popUpCloseButtons.size());
if (popUpCloseButtons.size() > 0)
js.executeScript("arguments[0].click();", popUpCloseButtons.get(popUpCloseButtons.size() - 1));
//popUpCloseButtons.get(popUpCloseButtons.size() - 1).click();
}
И пользовательский метод ожидания:
public List<WebElement> waitElements(WebDriver driver, int timeout, By locator) throws InterruptedException {
List<WebElement> elements = new ArrayList<>();
for (int i = 0; i < timeout; i++) {
elements = driver.findElements(locator);
if (elements.size() > 0)
break;
System.out.println("Not!");
Thread.sleep(1000);
}
return elements;
}