Wie bekomme ich Selenium WebDriver zu einem bestimmten Element zu scrollen, um es auf dem Bildschirm zu bekommen. Ich habe viele verschiedene Möglichkeiten ausprobiert, aber ich hatte kein Glück. Funktioniert das nicht in den C# -Bindungen?Wie scrolle ich mit Selenium WebDriver zu Element mit C#
Ich kann es zu einem bestimmten Ort springen ex ((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 150)");
Aber ich möchte in der Lage, es an verschiedene Elemente zu senden, ohne die genaue Position jedes Mal geben.
public IWebElement Example { get { return Driver.FindElement(By.Id("123456")); } }
Ex 1) ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", Example);
Ex 2) ((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollBy(Example.Location.X", "Example.Location.Y - 100)");
Wenn ich es sehen, es abspringen die Seite nicht auf das Element, und die Ausnahme entspricht dem Element-Bildschirm wird ausgeschaltet .
Update: Ich habe eine Bool ex = Example.Exists(); Danach und überprüft die Ergebnisse. Es existiert (es ist wahr). Es wird nicht angezeigt (weil es immer noch außerhalb des Bildschirms ist, da es nicht in das Element verschoben wurde) Es ist nicht ausgewählt ??????
Jemand sieht Erfolg By.ClassName. Weiß jemand, ob es ein Problem mit dem By.Id in den C# Bindungen gibt?
Vielleicht können Sie versuchen, "Pfeil nach unten" Keypressen zu simulieren, bis die Ausnahme verschwindet. Ich weiß, das läuft gegen die Wand, bis die Wand bricht, aber wenn du willst, dass es irgendwie funktioniert, könnte es eine Lösung sein ?! – krizz
Sie können mit einer Sache ausprobieren, ExpectedConditions.visibilityOfElement-Methode verwenden und es als eine Bedingung der while-Schleife und in Schleife die Ansicht von einigen sagen sagen, 100, 100 Koordinaten. –
Bevor das Javascript aufgerufen wird, sind Sie sicher, dass WebDriver Ihr Element gefunden hat? – Jordan