質問編集履歴

1 微修正

horik

horik score 44

2016/04/17 22:23  投稿

PhantomJSDriverで下スクロールする
JavaのSeleniumを使ってWebサイトのスクレイピングをしています。
JavaScriptで下にスクロールすることでコンテンツが読み込まれていくサイトで、
すべてのコンテンツを表示してからスクリーンショットを取りたいと考えています。
FirefoxDriverでは想定通りにスクロールをしてスクリーンショットが取れましたが、
PhantomJSDriverでは下スクロールが機能していならしくコンテンツをすべて読み込んでくれません。
何かいい方法はありませんでしょうか?
// ソース
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("takeScreenshot", true);
WebDriver driver = new PhantomJSDriver(cap);
driver.get("https://facebook.com/login.php");
driver.get("目的のURL");
// JavaScriptExecutorを使ったスクロール
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(0, 1000)");
// Actionsを使ったスクロール
Actions act = new Actions(driver);
act.sendKeys(Keys.PAGE_DOWN).perform();
// スクリーンショット
File shot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(shot, new File("./screen.png"));
driver.quit();
  • Java

    22985 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JavaScript

    33689 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • selenium

    1663 questions

    Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る