WebDriver - Warten Sie mit Java auf das Element

Ich bin auf der Suche nach etwas ähnlichemwaitForElementPresent um zu überprüfen, ob das Element angezeigt wird, bevor ich darauf klicke. Ich dachte, das kann durch getan werdenimplicitWaitAlso habe ich folgendes benutzt:

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

und dann klicken Sie auf

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

Leider wartet es manchmal auf das Element und manchmal nicht. Ich habe eine Weile gesucht und diese Lösung gefunden:

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

Und es hat gewartet, aber bevor es abgelaufen ist, musste es 10 mal 5, 50 Sekunden warten. Ein bisschen viel. Also habe ich die implizite Wartezeit auf 1 Sekunde gesetzt und alles schien bis jetzt in Ordnung zu sein. Denn jetzt warten einige Dinge 10s vor dem Timeout, andere nach 1s.

Wie decken Sie das in Ihrem Code vorhandene / sichtbare Warten auf ein Element ab? Jeder Hinweis ist spürbar.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage