WebDriver.Wait wartet nicht auf angegebenes Element
Abfrage:
Mein Code versucht zu warten das Aussehen eines Elements vor dem Abrufen seines Textinhalts. Während Sie den Code schrittweise durchgehen, funktioniert er ordnungsgemäß. Wenn es jedoch ohne Haltepunkte ausgeführt wird, scheint die Wartezeit umgangen zu werden und es wird eine Ausnahme ausgelöst.
Warum wird die Wartezeit vernachlässigt?
Codeausschnitt:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); IWebElement message = wait.Until(driver => driver.FindElement(By.ClassName("block-ui-message"))); string messageText = message.Text;
Antwort:
Ein alternativer Ansatz ist die Verwendung Die ElementIsVisible()-Methode von WebDriverWait in Kombination mit einer modifizierten Locator-Strategie:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
Verwendung von DotNetSeleniumExtras.WaitHelpers mit NuGet:
Bei Verwendung von SeleniumExtras und WaitHelpers kann der Code wie folgt geändert werden:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
Das obige ist der detaillierte Inhalt vonWarum scheint mein WebDriverWait ignoriert zu werden, wenn er ohne Debugging ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!