2016-04-18 3 views

答えて

1

ページをスクロールすると、追加のムービーが読み込まれます。一定量のムービーまたはすべてのムービーをロードする場合は、連続してスクロールして待機する必要があります。

ナイーブな実装:

int DESIRED_COUNT = 100; 
int currentCount = driver.findElements(By.cssSelector("#films .film")).size(); 

while (currentCount < DESIRED_COUNT) { 
    driver.executeScript("window.scrollTo(0, document.body.scrollHeight)"); 
    Thread.sleep(1000); 
    currentCount = driver.findElements(By.cssSelector("#films .film")).size(); 
} 

// now get the page source 
System.out.println(driver.getPageSource()); 

Thread.sleep()待ち時間は、おそらくWebDriverWaitを経由して明示的な待ちに置き換える必要があります。

+0

Thread.sleep()は欠けていた部分でした。私は実際にサーバーに応答する時間を与える必要があることを認識していませんでした:)。ありがとう! –

+0

@JohnRoberts 'Thread.sleep()'は一般的に避けてください。代わりに 'WebDriverWait()'を使うべきです。この作業のために、私はかなり大丈夫だと思いますが、私たちはwhileループ条件で予想される条件チェックを持っています。 – alecxe

+0

OK。ちゃんと覚えておきますよ。 –