WebDriver - czekaj na element używając Java

Szukam czegoś podobnegowaitForElementPresent aby sprawdzić, czy element jest wyświetlany przed jego kliknięciem. Myślałem, że można to zrobić przezimplicitWait, więc użyłem następujących:

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

a następnie kliknij

driver.findElement(By.id(prop.getProperty(vName))).click();

Niestety, czasami czeka na element, a czasami nie. Spojrzałem przez chwilę i znalazłem to rozwiązanie:

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();

I czekał dobrze, ale przed upływem czasu musiał czekać 10 razy 5, 50 sekund. Trochę dużo. Ustawiłem więc domyślnie oczekiwanie na 1 sekundę i wszystko wydawało się do tej pory w porządku. Ponieważ teraz niektóre rzeczy czekają 10s przed upływem limitu czasu, ale niektóre inne rzeczy wygasają po 1s.

Jak pokrywasz oczekiwanie na element obecny / widoczny w kodzie? Każda wskazówka jest znacząca.

questionAnswers(4)

yourAnswerToTheQuestion