无法使用Selenium WebDriver和Java滚动特定的DIV

时间:2016-06-03 03:00:32

标签: java selenium automation

WebDriver无法找到浏览器可见区域中不可见的元素。为了使Web元素可以通过WebDriver查看,我们需要在浏览器的视图中显示该元素以向下滚动特定的div!我尝试了很多,没有帮助我。因此它仍然没有工作。请建议

我的代码:

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(By.xpath("//*[@id='lobbyMain']/div[3]/div[2]/ul/li[1]/div[1]/h3/a"))).onclick;

2 个答案:

答案 0 :(得分:0)

查看滚动的基本方法是:

Webelement element = driver.findElement(By.xpath("//*[@id='lobbyMain']/div[3]/div[2]/ul/li[1]/div[1]/h3/a"))

JavascriptExecutor js = (JavascriptExecutor) element;
    int yPosition = element.getLocation().getY();

    for (int second = 0;; second++) {
        if(second >=4){
            break;
        }
        ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,200)", ""); //y value '400' can be altered
        Thread.sleep(3000);

根据您的方便,您可以改变秒数。

或者只是参考下面的链接。它会对你有所帮助。

https://www.seleniumeasy.com/selenium-tutorials/scrolling-web-page-with-selenium-webdriver-using-java

如果您仍然遇到问题,请回复我。 : - )

答案 1 :(得分:0)

当您对元素执行单击时,Selenium将自动滚动到该元素。你可以这样做:

driver.findElement(By.xpath("//*[@id='lobbyMain']/div[3]/div[2]/ul/li[1]/div[1]/h3/a")).click()

硒应该找到它,滚动到它并点击它。 如果这不起作用,我有时会用它来滚动:

((JavascriptExecutor) driver).executeScript(
            "scroll(" + element.getLocation().getX() + "," + element.getLocation().getY() + ")");