Heim >Backend-Entwicklung >C++ >Warum wartet mein WebDriverWait nicht, wenn es ohne Haltepunkte ausgeführt wird?

Warum wartet mein WebDriverWait nicht, wenn es ohne Haltepunkte ausgeführt wird?

Barbara Streisand
Barbara StreisandOriginal
2024-12-30 20:33:09481Durchsuche

Why Is My WebDriverWait Failing to Wait When Running Without Breakpoints?

WebDriverWait wartet nicht wie erwartet

Beim Versuch, den Text von einem Element abzurufen, wird eine Wartezeit implementiert, um sicherzustellen, dass das Element vorher sichtbar ist Abruf. Allerdings scheint die Wartezeit umgangen zu werden, wenn der Code ohne Haltepunkte ausgeführt wird, was zu einer Ausnahme führt.

Erklärung des Problems

Der bereitgestellte Codeausschnitt verwendet die FindElement-Methode von die WebDriverWait-Klasse, die eine Ausnahme auslöst, wenn das Element nicht innerhalb des angegebenen Timeout-Zeitraums (in diesem Fall 30 Sekunden) gefunden werden kann. Diese Unmittelbarkeit könnte darauf zurückzuführen sein, dass das Element bis zum Ablauf der Wartezeit nicht sichtbar oder geladen ist.

Lösung

Alternativ können Sie die ElementIsVisible-Bedingung von verwenden die ExpectedConditions-Klasse in Kombination mit dem WebDriverWait. Bei diesem Ansatz wird gewartet, bis das Element die Bedingung erfüllt (in diesem Fall sichtbar ist). Darüber hinaus können Sie die GetAttribute-Methode verwenden, um das innerHTML des Elements anstelle der Text-Eigenschaft abzurufen.

Hier ist ein Beispiel für die Verwendung der ElementIsVisible-Bedingung:

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

DotNetSeleniumExtras.WaitHelpers Option

Wenn Sie angestellt sind Mit SeleniumExtras.WaitHelpers über NuGet können Sie die ElementIsVisible-Bedingung aus der ExpectedConditions-Klasse wie folgt nutzen:

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 wartet mein WebDriverWait nicht, wenn es ohne Haltepunkte ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn