WebDriverWait oder ImplicitlyWait oder ExplictlyWait nichts funktioniert

Bin ich mit Selenium 2 tests (geschrieben in C#) wählen Sie die Werte, die von einer "select" - regler. Auswahl bewirkt eine post zurück an den server, welche updates den Zustand der Seite. Ich bin daher der Durchführung einer manuellen Wartezeit (thread.sleep) nach der Auswahl eines Wertes warten, bis die Seite gewechselt werden. und es funktioniert gut mit dem Thread.Schlafen. Allerdings Thread.Sleep ist eine schlechte Idee, mit der Reihe von guten Gründen, also wenn ich alle meine Thread.Sleep Zeile code dann alle meine Testfälle auseinander fallen, und ich habe versucht WebDriverWait, Implizit und Explizit keiner arbeitet und sehr frustration

unten ist der Beispiel-code, den ich ausprobiert habe....

//WebDriverWait

 public IWebElement WaitForElement(By by)
 {
            //Tell webdriver to wait
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
            wait.PollingInterval = TimeSpan.FromSeconds(2);
            wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException));
            wait.IgnoreExceptionTypes(typeof(StaleElementReferenceException), typeof(StaleElementReferenceException));

            IWebElement myWait = wait.Until(x => x.FindElement(by));
            return myWait;
}

Versucht auch diese:

   WebDriverWait wait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(30), TimeSpan.FromMilliseconds(100));

//Implizit:

driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));

//Explizite Warten:

IWebDriver driver = new FirefoxDriver();
driver.Url = "http://somedomain/url_that_delays_loading";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
    {
        return d.FindElement(By.Id("someDynamicElement"));
    });
InformationsquelleAutor Nick Kahn | 2012-10-19
Schreibe einen Kommentar