2014-09-01 102 views
2

有一個網站,列出前20項和他們,如果我向下滾動它加載下20項。說如果網站要列出100個項目,那麼我必須向下滾動到最後一個項目5次以獲得所有列出的100個項目。硒加載完整的網站

我在java中使用硒來獲取網頁,但它只獲得前20項。我希望它加載頁面中的所有項目並獲取頁面的html。

在顯示了大約100個項目之後,頁面會生成一個如下所示的顯示div。

<div id="show-more-results" class="dont-show"> 
Show more results 
</div> 

現在我想點擊show more results。我有一個工作代碼,直到這部分。 但點擊show-more-results部分不起作用。

public class seleniumTest 
{ 
public static void main(String[] args) throws InterruptedException 
{ 
    String link = "http://www.some.com"; 
    System.setProperty("webdriver.chrome.driver","path"); 
    WebDriver driver = new ChromeDriver(); 
    driver.get(link); 
    JavascriptExecutor jse = (JavascriptExecutor)driver; 
     for (int i = 0; i < 4; i = i + 1) { 
     jse.executeScript("window.scrollBy(0, 5000)", ""); 
     Thread.sleep(1000L); 
    } 
    driver.findElement(By.id("show-more-results")).click(); 
} 
} 

該代碼的最後一行現在不起作用。即driver.findElement(By.id("show-more-results")).click();

URL中使用:

http://www.flipkart.com/mobiles/micromax~brand/pr?p%5B%5D=sort%3Dprice_asc&sid=tyy%2C4io&ref=d92e01d2-38f2-46bb-82be-752e93e9ce88 

任何幫助嗎?

+0

的當您向下滾動時,頁面可能會向服務器發出另一個請求,因此您可能必須找出請求URL和POST身體(如果有的話)並重新創建它。那有意義嗎? – Tyress 2014-09-01 04:14:32

+0

「你現在不工作」是什麼意思?沒有點擊執行?例外?您可以通過視覺方式執行腳本,此時會顯示「顯示更多結果」按鈕? – 2014-09-01 12:17:07

+0

你可以分享使用的實際網址嗎? – alecxe 2014-09-01 13:09:55

回答

1

你需要調用window.scrollBy() javascript函數:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0, 3000)", ""); 

而且,你要在一個循環中可能做到這一點多次:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
for (int i = 0; i < 5; i = i + 1) { 
    jse.executeScript("window.scrollBy(0, 3000)", ""); 
    Thread.sleep(1000L); // needed to wait for the page load 
} 
+0

是的,它的工作..謝謝 – user2186465 2014-09-01 10:55:03

+0

現在修改問題...看看你能幫忙。 – user2186465 2014-09-01 12:09:12

+0

我已經給出了上面的網址...... – user2186465 2014-09-01 13:22:00

0

試試這個:

WebDriver driver = new FirefoxDriver(); 
JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0,250)", ""); 
//or 
//scroll down 
jse.executeScript("scroll(0, 250);"); 
//scroll up 
jse.executeScript("scroll(0, -250);"); 
+0

請幫助修改的問題。 – user2186465 2014-09-01 12:09:54