使用某些参数滚动到视图中

时间:2016-10-06 08:20:38

标签: javascript c# selenium

我已经看到了滚动视图,但我正在考虑让它变得更聪明。

这是我目前的代码

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

挂钩到我的OnClicking事件监听器 - 所以无论何时单击一个元素,首先它将其滚动到视图中。

这很棒,它可以满足我的需求,但是在运行我的测试时,即使元素位于屏幕中间,我的页面也会上下滚动。

所以我的问题是,如何在此设置参数,如果元素在可见屏幕上低于3/4 然后滚动

3 个答案:

答案 0 :(得分:1)

我想。你可以尝试一下。

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

答案 1 :(得分:0)

您可以使用javascript来获取X / Y坐标:

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
    };
};

在这种情况下,您需要Y坐标。 并使用此:http://www.w3schools.com/jsref/met_win_scrollto.asp

或者......看看这个: Javascript scrollIntoView() middle alignment?

答案 2 :(得分:0)

我知道这是旧帖子,但是如果有人在寻找答案,那就是

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView({block: \"center\"});", webElement);