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.

0
roni1800 4 Jän. 2016 im 22:27

2 Antworten

Beste Antwort

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.

2
Guy 4 Jän. 2016 im 19:44

Warum nicht scrollIntoView() direkt verwenden ::

js.ExecuteScript("arguments[0].scrollIntoView();", element); 
0
alecxe 4 Jän. 2016 im 19:33