2016-10-06 2 views
1

Ich habe eine Rolle in dem Blick bereits das funktioniert, aber ich dachte, es klüger zu machen.Scroll in der Ansicht mit bestimmten Parametern

Dies ist mein Code so weit

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);

, die in meinem OnClicking Ereignis-Listener verhakt ist - so, wann immer es geht um ein Element zu klicken, zuerst es in den Blick scrollt.

Das ist großartig und es tut, was ich will, aber wenn meine Tests läuft meine Seite wird Scrollen nach oben und nach unten, auch wenn das Element in der Mitte des Bildschirms ist.

Also meine Frage ist, wie kann ich einen Parameter auf diesem Satz zu sagen, wenn das Element unten 3/4 auf dem Bildschirm sichtbar ist dann Scroll?

+0

Bedeutet möchten Sie scrollen, wenn das Element nicht auf dem Bildschirm angezeigt wird? Recht –

+0

@SaurabhGaur Ich möchte nur blättern, wenn das Element weniger als 75% des Bildschirms ist. –

Antwort

0

können Sie Javascript verwenden, um die X/Y cordinates zu erhalten:

var cumulativeOffset = function(element) { 
    var top = 0, left = 0; 
    do { 
     top += element.offsetTop || 0; 
     left += element.offsetLeft || 0; 
     element = element.offsetParent; 
    } while(element); 

    return { 
     top: top, 
     left: left 
    }; 
}; 

In diesem Fall, dass Sie die Y-Koordinate möchten. Und diese verwenden: http://www.w3schools.com/jsref/met_win_scrollto.asp

Oder ... einen Blick auf diese: Javascript scrollIntoView() middle alignment?

+0

Wie verwende ich das mit Selen? –

+0

Codieren Sie in Java? PHP/Behat? Python? Sie können dies als Javascript ausführen. Für Java: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html – XorX

1

denke ich. Du kannst es versuchen.

var element = driver.FindElement(By.Xpath("//*/blabla")); 
var js = driver as IJavaScriptExecutor; 
js.ExecuteScript("window.scrollTo(" + element.Location.X + ","+(element.Location.Y - 100) + ");"); 
Verwandte Themen