2017-09-01 65 views
2

我无法滚动Google的搜索结果页面到结尾。任何人都可以给我指点了下面的代码1.试着用JS做由以下使用Selenium WebDriver滚动Google搜索结果3.4.0

(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)"); 

     } 
    } 
} 
+0

请说什么是埃罗消息 –

+0

有没有错误消息,但在没有正在执行滚动操作执行上面的代码 – Rohit

+0

@Rohit你想滚动到一个特定的元素,或者只是向下滚动页面? – smit9234

回答

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); 
+0

谢谢@ iamsankalp89。使用机器人类上面提到的工作是按预期工作。使用JS,我想知道为什么它不在谷歌的结果页独自工作,但它适用于其他网站。 – Rohit

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是绝对值,而不是滚动的增量。或者使用scrollBy

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

    } 
+0

谢谢主席及时回复。使用 (a)j.executeScript(“window.scrollTo(0,500 * i)”);获取以下异常 线程“main”中的异常org.openqa.selenium.WebDriverException:未知错误:i未定义 (b)j.executeScript(“window.scrollBy(0,500)”); 不执行任何操作 – Rohit

+0

将'int i'更改为'var i' –

+0

谢谢先生。由于我是新来的硒和Java无法解决以下问题。 “var无法解析为类型”。你能帮我一下吗?谢谢你的时间。 – Rohit

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

或者,你可以做如下:

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

谢谢Kapiil回复,但在执行上述代码时不执行任何操作。有没有其他解决方案来解决这个问题? – Rohit

+0

我犯了一个错字,jse应该是j根据你的文章。 – Kapil

+0

谢谢卡皮尔。我改变了'j.executeScript(“window.scrollBy(0,250)”,“”);''和'j.executeScript(“scroll(0,250);”);'但仍然是相同的结果 – Rohit