2017-09-01 67 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