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"));
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was funktioniert für mich ->
Können Sie auch tun, durch die ID ->
Ohne zu sehen, mehr von deinem code, es wird schwer sein, zu ermitteln, warum es nicht funktioniert.
versuchen,
Ich eine Lösung finden, mit stackoverflow 🙂 und das funktioniert: