Zeitweiliges Umgehen impliziter Wartezeiten mit WebDriver

Wenn implizite Wartezeiten verwendet werden,wie hier empfohlen, Ich nochmanchmal will das behauptensofortig Unsichtbarkeit oder Nichtexistenz von Elementen.

Mit anderen Worten, ichkennt Einige Elemente sollten ausgeblendet sein und ich möchte, dass meine Tests diese Behauptung aufstellenschnell, ohne wegen des (ansonsten nützlichen) impliziten Wartens einige Sekunden zu verbringen.

Eine Sache, die ich ausprobiert habe, war eine Hilfsmethode wie diese:

// NB: doesn't seem to do what I want
private boolean isElementHiddenNow(String id) {
    WebDriverWait zeroWait = new WebDriverWait(driver, 0);
    ExpectedCondition<Boolean> c = invisibilityOfElementLocated(By.id(id));
    try {
        zeroWait.until(c);
        return true;
    } catch (TimeoutException e) {
        return false;
    }
}

Aber im obigen Code ist der Aufruf anuntil() kehrt nur zurücknachdem die implizite Wartezeit abgelaufen istes macht nicht das, was ich wollte.

Dies ist der einzige Weg, den ich bisher gefunden habe, der funktioniert:

@Test
public void checkThatSomethingIsNotVisible()  {
    turnOffImplicitWaits();
    // ... the actual test
    turnOnImplicitWaits();
}

... wo z.B.turnOffImplicitWaits() ist ein Helfer in der allgemeinen Selen-Oberklasse:

protected void turnOffImplicitWaits() {
    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
}

Aber das ist nicht sehr elegant, denke ich.Gibt es eine sauberere Möglichkeit, das implizite Warten gelegentlich zu umgehen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage