列表中的Selenium Scroll元素(Java)

时间:2017-12-11 10:58:17

标签: java selenium selenium-webdriver

我正在尝试向下滚动列表中的某些元素。但这不适合我。

尝试以下代码。

JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("arguments[0].scrollIntoView(true);",elementToScroll);

以下是电子邮件模板下的组织设置中的图片,有一些可用的元素。所以我想点击我。但是直到它们没有出现在屏幕上我才能点击。 有人可以帮我解决这个问题吗? enter image description here

3 个答案:

答案 0 :(得分:0)

我有一种方法可以在屏幕中间查看任何元素。方法是

public void viewElementToCenter(WebElement ele){

    String scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);"
            + "var elementTop = arguments[0].getBoundingClientRect().top;"
            + "window.scrollBy(0, elementTop-(viewPortHeight/2));";

    ((JavascriptExecutor) driver).executeScript(scrollElementIntoMiddle, ele);
    //((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", ele);
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
    }
}

调用此方法,如下所示

viewElementToCenter(elementToScroll);

然后点击该元素

elementToScroll.click();

答案 1 :(得分:0)

可能你可以尝试这个并获得运气:

JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.scrollBy(0,500)", "");

(0,500):增加像素大小以沿x轴(水平)向下滚动更多。

答案 2 :(得分:0)

您可以尝试以下代码..

 ((JavascriptExecutor)driver).executeScript("document.evaluate(xpathofelement_toclick, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).scrollIntoViewIfNeeded();");