Ich bin neu in der Verwendung von Selen Webdriver
und Schreiben c#
. Ich habe viele thread.sleep()
Befehle in meinem Skript verwendet, um sicherzustellen, dass Selenium nicht zu schnell versucht hat zu klicken. Nach viel Forschung fand ich ist dies verpönt und es gibt „besser“ Möglichkeiten, es zu tun, so begann ich zu verwenden: -Selen C# wait.until (erwartete Bedingungen) ... Funktion kann keine Objekte/Elemente auf dem Bildschirm finden
wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("FieldId")));
Warten Sie ist in einer anderen Klasse definiert als: -
wait = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 10));
kann ich nur bekommen diese 2/10 mal zu arbeiten, um das Skript laufen, ohne sich:
kein solches Element Ausnahme: nicht Element finden ......
Ich habe Tonnen von Beispielen für dieses Problem jetzt habe ich mit thread.sleep
gestoppt. Nach vielen Recherchen finde ich immer, dass dies der empfohlene Weg ist, aber es scheint völlig unzuverlässig. Habe ich etwas verpasst? Das Element ist immer nach 2 Sekunden da und der Fehler tritt auf, bevor 10 Sekunden vergangen sind. Ich habe mindestens 10 andere Beiträge gelesen, die ähnlich klingen, aber keine von ihnen hat eine Lösung, die funktioniert ... außer Thread.Sleep(5000)
!
Wenn Sie 'WebDriverWait' verwenden, wie könnten Sie bekommen' kein solches Element exception' während es 'TimeoutException' wirft ?? –
@SaurabhGaur 'Bis()' löst Ausnahmen aus, wenn sie nicht in der Ignorierliste sind –
Verwenden Sie auch eine implizite Warteschlange? Sie können unerwartete Ergebnisse erhalten, wenn Sie gleichzeitig implizite und explizite Wartezeiten verwenden. – JeffC