Offensichtlich interagiert Selen erst mit einem Webelement, wenn es in der Ansicht angezeigt wird, und Selen versucht automatisch, zu diesem Webelement zu scrollen. In meinem Fall wird beim Versuch, auf eine bestimmte Schaltfläche zu klicken, diese nicht zum Anzeigen gescrollt, sondern einfach zu einer zufälligen Stelle auf der Seite gescrollt.
Ziel: Scrollt das Webelement in die Ansicht und klickt dann auf dieses Element.
Methoden, die ich bereits verwendet habe:
element.Click(); //method 1
Actions actions = new Actions(driver); // method 2
actions.MoveToElement(element);
actions.Perform();
IJavaScriptExecutor js = driver as IJavaScriptExecutor; //method 3
js.ExecuteScript("$('#Id_Body' + element_id)[0].scrollIntoView( true );"); //because the driver scrolls to a random place I use this to get back to the top of the page.
int Y = element.Location.Y, X = element.Location.X;
js.ExecuteScrip($"window.scrollBy( {X}, {Y};");
Ich verwende Selen 2.48.0, FirefoxDriver 43.0.1
Gibt es eine Lösung für dieses Problem? Wenn jemand eine ältere Version von Selen / Firefox kennt, die mit einer dieser Methoden gut funktioniert, sagen Sie mir bitte, danke.
2 Antworten
Versuchen Sie es mit double MoveToElement
Actions action = new Actions(driver);
action.MoveToElement(elementParent).MoveToElement(elementToClick).Build().Perform();
Gehen Sie zuerst zum Elementbereich und dann zu dem Element, auf das Sie klicken möchten.
Warum nicht scrollIntoView()
direkt verwenden ::
js.ExecuteScript("arguments[0].scrollIntoView();", element);
Verwandte Fragen
Neue Fragen
c#
C # (ausgesprochen "siehe scharf") ist eine statische Typisierungsprogrammiersprache mit mehreren Paradigmen, die von Microsoft entwickelt wurde. C # -Code zielt normalerweise auf die .NET-Tools und -Laufzeiten von Microsoft ab, zu denen unter anderem .NET Framework, .NET Core und Xamarin gehören. Verwenden Sie dieses Tag für Fragen zu Code, der in der formalen Spezifikation von C # oder C # geschrieben ist.