Я ищу что-то похожее на waitForElementPresent, чтобы проверить, отображается ли элемент, прежде чем нажимать на него. Я думал, что это можно сделать с помощью implicitWait, поэтому я использовал следующее:
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
а затем нажмите
driver.findElement(By.id(prop.getProperty(vName))).click();
К сожалению, иногда он ждет элемент, а иногда нет. Я искал какое-то время и нашел это решение:
for (int second = 0;; second++) {
            Thread.sleep(sleepTime);
            if (second >= 10)
                fail("timeout : " + vName);
            try {
                if (driver.findElement(By.id(prop.getProperty(vName)))
                        .isDisplayed())
                    break;
            } catch (Exception e) {
                writeToExcel("data.xls", e.toString(),
                        parameters.currentTestRow, 46);
            }
        }
        driver.findElement(By.id(prop.getProperty(vName))).click();
И он все подождал, но до тайминга ему пришлось ждать 10 раз 5, 50 секунд. Многовато. Поэтому я установил неявное ожидание 1 сек, и все до сих пор казалось прекрасным. Потому что теперь некоторые вещи ждут 10 секунд до таймаута, но некоторые другие тайм-аут после 1 с.
Как вы покрываете ожидание присутствия/видимости элемента в вашем коде? Любой намек заметен.