使用Selenium WebDriver 3.4.0滚动Google搜索结果

时间:2017-09-01 14:12:52

标签: selenium selenium-webdriver selenium-chromedriver

我无法将Google的搜索结果页面滚动到最后。任何人都可以给我指出以下代码1.试图通过以下

使用JS
(a)j.executeScript("window.scrollTo(0,500)")
(b)j.executeScript("window.scrollBy(250,350)") 
(c)j.executeScript("window.scrollTo(0,document.documentElement.scrollHeight")**

        WebDriver driver = new ChromeDriver();
        driver.navigate().to("https://www.google.com");
        driver.manage().window().maximize();

        // Google News

        driver.findElement(By.id("lst-ib")).click();
        driver.findElement(By.id("lst-ib")).sendKeys("News");
        driver.findElement(By.id("lst-ib")).sendKeys(Keys.RETURN);
        Thread.sleep(2000);
        driver.findElement(By.xpath("//div[@class='rc']//a")).click();
        Thread.sleep(4000);
        JavascriptExecutor j = (JavascriptExecutor)driver;
        for(int i=1;i<=3;i++)
        {
            j.executeScript("window.scrollTo(0,500)");

        }
    }
}

3 个答案:

答案 0 :(得分:1)

使用此:

((JavascriptExecutor) driver).executeScript("window.scrollBy(0,250)");

滚动到特定元素

js.executeScript("arguments[0].scrollIntoView(true);",element);

此处元素是您想要滚动的Webelement

或者您可以使用Robot

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PAGE_DOWN);
robot.keyRelease(KeyEvent.VK_PAGE_DOWN);

答案 1 :(得分:0)

更改以下代码

    for(var i=1;i<=3;i++)
    {
        j.executeScript("window.scrollTo(0,500)");

    }

    for(int i=1;i<=3;i++)
    {
        j.executeScript("window.scrollTo(0, arguments[0]*500)", i);

    }

它应该有效。您使用的500是绝对值,而不是滚动的delta。或者使用scrollBy

    for(int i=1;i<=3;i++)
    {
        j.executeScript("window.scrollBy(0,500)");

    }

答案 2 :(得分:0)

j.executeScript("window.scrollBy(0,250)", "");

或者,你可以这样做:

j.executeScript("scroll(0, 250);");