Selenium:自动化Java中的垂直滚动

时间:2017-07-06 02:42:16

标签: java selenium selenium-webdriver scroll

我需要使用滚动条自动向下滚动。 This is what the scroll bar looks like. 这是滚动条的html代码:

<div class="z-biglistbox-wscroll-vertical">
    <div class="z-biglistbox-wscroll-drag" style="top: 132.253px;">
        <div class="z-biglistbox-wscroll-home" title="Home"></div>
        <div class="z-biglistbox-wscroll-up" title="Previous"></div>
        <div class="z-biglistbox-wscroll-down" title="Next"></div>
        <div class="z-biglistbox-wscroll-end" title="End"></div>
    </div>
</div>

我想也许点击&#34;下一步&#34;滚动条的按钮,但我的代码不起作用。我做了类似以下的事情:

((JavascriptExecutor)driver).executeScript("arguments[0].click();", scroll_down);

WebElement scroll_down = driver.findElement(By.cssSelector(".z-biglistbox-wscroll-down"));
scroll_down.click();

两者都没有奏效。任何人都可以告诉我如何做到这一点?

更新: 这个问题已经解决了。请参阅this link中的 alecxe 答案,了解适用于我的解决方案。

3 个答案:

答案 0 :(得分:0)

您可以直接使用javascriptexecutor进行滚动。下面的代码可能会给你一些想法。

案例1:向上滚动到某个元素,以便显示预期的元素

JavascriptExecutor je = (JavascriptExecutor) driver;

//Identify the WebElement which will appear after scrolling down
WebElement element = driver.findElement(By.xpath(".//*[@id='mCSB_3_container']/p[3]"));

// now execute query which actually will scroll until that element is not appeared on page.
je.executeScript("arguments[0].scrollIntoView(true);",element);

案例2 :向上滚动到某个元素

((JavascriptExecutor)driver).executeScript("scroll(0,400)");

希望这会对你有所帮助。感谢。

答案 1 :(得分:0)

WebElement element = driver.findElement(By.className("z-biglistbox-wscroll-down"));
element.click();

您可以使用它,但它只会在向下滚动元素中单击一次。

答案 2 :(得分:0)

尝试以下代码将窗口滚动到底部:

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;

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