2016-06-15 2 views
0

Webページのすべての製品が完全に読み込まれているかどうかを確認する必要がある問題を解決しようとしています。 ユーザーがページを下にスクロールしたときにのみ、商品が読み込まれます。スクロールのたびに8製品がロードされます。Selenium Web Driver - ページ内のすべての製品がロードされているかどうかを確認する方法

最後の製品がロードされ、ユーザーが下にスクロールできないページをチェックインする方法を教えてください。

+0

何を試してみましたか?結果は何ですか?良い質問をする方法のヘルプトピックをお読みください。あなた自身の問題を研究し、コードサンプルなどを見つけ、問題を解決するためのコードを書く必要があります。もしあなたがすべてそれをしてもそれを理解できないなら、戻ってあなたの質問を編集して、あなたがやった研究からのメモ、あなたが試したコード、そして結果が何か...エラーメッセージなど – JeffC

答えて

0

私はあなたと同様の問題に直面しました。私の場合、より多くのアイテムがロードされているというメッセージが表示されます。すべてのアイテムをロードした後、私はもはやこのメッセージを受け取りませんでした。だから、私はそれを解決する方法は、ページの下部にスクロールするループを作成し、より多くのものがロードされているかどうかをチェックし、すべてがロードされたらループから抜け出すことです。

もっと多くのアイテムがロードされていることを示す要素がない場合は、findElements()を使用してすべての製品を取得し、このリストのサイズを確認できます。すべての製品がロードされると、リストは同じ長さになります。

JavascriptExecutor executor = (JavascriptExecutor) driver; 
List<WebElement> products = driver.findElements(By.something, "locator"); 

int amount = 0; 
while products.size() > amount { 
    amount = products.size() 
    // Scroll to the bottom of the page 
    executor.executeScript("window.scrollTo(0, document.body.scrollHeight);"); 
    products = driver.findElements(By.something, "locator"); 
} 
0

知らsolution for scrolling downを使用します。

WebDriver driver = new FirefoxDriver(); 
JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0,250)", ""); 

その後last後の8つの製品が反復をスクロールすると、current反復異ならないことを確認してください。 疑似コード:

products = getProducts(); 
jse.executeScript("window.scrollBy(0,250)", ""); 
// reasonable wait here 
if(getProducts() == products){ 
    //that it. nothing to scroll 
関連する問題