2017-06-05 89 views
0

在我的頁面中,我有很多數據。第一次打開的頁面我只能看到數據。當我向下滾動頁面時,其他數據開始出現。它正在反覆。問題是我想看到我的頁面中的所有數據,並拿起他們的名字,但是當我使用List <WebElement> listItems=driver.findElement(AAA).findElements(BBB);這個代碼時,我只能從第一頁獲取數據。我怎樣才能看到其他人? (我不想在底部使用id或class,然後滾動直到看到它)如何向下滾動頁面,直到出現所有視圖?

+0

我認爲這實際上可能是我連接作爲進入一些細節上的解決方案用於滾動,這樣的鏈接後的副本元素實際上出現。 [點擊此處查看問題](https://stackoverflow.com/questions/26729532/how-to-search-for-element-in-dynamic-loading-grid-on-scroll-using-selenium-webdr) – Wunderbread

+0

但是這個答案正在尋找一個特定的元素。我想看到所有元素並向下滾動,直到沒有人離開。 @Wunderbread – ABC

+0

啊,那是真的。如果我自己設計測試,我會將自動化功能烘焙到頁面中,並在底部設置一個ID並設置硒以選擇該ID,以便展開顯示所有元素的頁面。我繼續並投票選出了一個我認爲能夠在這篇文章中幫助你的答案。 – Wunderbread

回答

1

那麼,你一定可以滾動到底部。最簡單的方法是使用JavaScript來看到滾動的高度和滾動它:

JavascriptExecutor jse = (JavascriptExecutor) driver; 
Long scrollHeight = (Long) jse.executeScript("return document.scrollHeight;"); 
jse.ExecuteScript("document.scrollTop="+scrollHeight); 

但是,如果這只是作品的頁面已經與正確的高度滾動條。如果它不能一次完全渲染,滾動高度可能不正確。有一種解決方法,但我從來沒有嘗試過使用頁面,只有表格。

您按下PgDn按鈕並檢查scrollTop。您需要在每個PgDn後等待一秒,因爲渲染滾動可能需要一些時間,並且您需要scrollTop已經正確。只要前一個和當前的scrollTop相同,就完成了。

我還沒有親自嘗試過使用這裏按PgDn的方法。我只是把它發送到這裏的身體元素。另一種方法是使用Actions。

JavascriptExecutor jse = (JavascriptExecutor) driver; 
WebElement body = driver.findElement(By.tagName("body")); 
String prevTop ="-1"; 
boolean continueScrolling = false; 
do { 
    body.sendKeys(Keys.PAGE_DOWN); 
    Thread.sleep(1000); // you might need to add handling for InterruptedException 
    String currentTop = String.valueOf(jse.executeScript("return document.scrollTop;")); 
    continueScrolling = !currentTop.equals(prevTop); 
    prevTop = currentTop; 
} while (continueScrolling); 
0

您可以執行JavaScript代碼是這樣的:

WebElement element = driver.findElement(By.id("id_of_element")); 
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); 

//do anything you want with the element 
相關問題