WebDriver - ожидание элемента с использованием Java

Я ищу что-то похожее на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 секунду.

Как вы покрываете ожидающий элемент, присутствующий / видимый в вашем коде? Любой намек заметен.

Ответы на вопрос(4)

Ваш ответ на вопрос