Допустим есть метод
public void ElementPolling(String elementPath, int timeout) throws MyBugException, InterruptedException { (new WebDriverWait(driver, timeout)) .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(elementPath))); List<WebElement> tasksList = driver.findElements(By.xpath(elementPath)); long start = System.currentTimeMillis(); int size=tasksList.size(); System.out.println(size); while (System.currentTimeMillis()<start+timeout){ (new WebDriverWait(driver, timeout)) .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(elementPath)));//Проверяет на наличие хотябы 1 элемента, работает криво приходится использовать свою проверку tasksList = driver.findElements(By.xpath(elementPath)); size=tasksList.size(); if (size>0) {Thread.sleep(3000); break;} } if (size==0) throw new MyBugException("Timeout"); }
Он поллингом в течении заданого таймаута опрашивает элемент на присутсвие в дом, но проблема в том, что по окончанию работы метода вебдрайвер кликает на элемент и все равно ошибка. Помогает только Thread.sleep(3000), ну тут опять проблема, если сервер тупит то трех секунд может не хватить и хоть метод и будет говорить, что элемент уже есть,но долбанный драйвер кликать в него не будет.
Никакие стандартные решения не помогают.