ウェブページ全体のスクリーンショットを撮る方法(全ページのスクリーンショット)、部分的な(上から下へ) を Selenium WebDriver で実行できますか?
私のコード:(Javaバインディング)
System.setProperty("webdriver.chrome.driver","/home/alex/Downloads/chromedriver_linux64/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("http://google.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(RESULT_FILENAME));
これに対処する方法について何かアイデアはありますか?
ベストアンサー1
レ:フルページのスクリーンショットに興味を持っている人がかなり多いようですので、いくつかの肯定的な回答を更新しようと思いました(銀の弾丸)。
ウェブテストフレームワークには、次のような機能を持つものが数多くあります(最小限のセットアップと労力で)を生成する全ページのスクリーンショット私は NodeJS テスト環境から来たので、次のことだけを保証できます。ウェブドライバーIO&Googleの操り人形師。
WebdriverIOで簡単に実行する方法に興味がある人は、これ答え。
簡単に答えるといいえ、あなたがすることはできません、Seleniumのみを使用している場合(詳しい理由は下記参照)。しかし、デバイス(モニター)を最大限に活用することは可能です。ビューポート。
ChromeOptions()
したがって、 ChromeDriver 固有の機能を設定するメソッドである を使用してブラウザ インスタンス (ドライバー) を起動します。次の操作を実行できます。
- ウィンドウを最大化します(
--start-maximized
スイッチを使用)。 - 全画面表示にします (
F11
Windows では - キー、Control+Cmd+F
Mac では--start-fullscreen
スイッチを使用)。 - 注: Chromeのコマンドラインスイッチの完全なリストについては、ここ。
コードは次のようになります。
// Setting your Chrome options (Desired capabilities)
ChromeOptions options = new ChromeOptions();
options.add_argument('--start-maximized');
options.add_argument('--start-fullscreen');
// Creating a driver instance with the previous capabilities
WebDriver driver = new ChromeDriver(options);
// Load page & take screenshot of full-screen page
driver.get("http://google.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
さて、フルページ問題に関しては、すべてのドライバー(chromedriver
、、、など)はgeckodriver
、IEDriver
EdgeDriver
WebDriver W3C標準です。したがって、WebDriverチームがさまざまな機能をどのように公開したいかに依存します。私たちの場合、'スクリーンショットを撮ります'。
定義を読むと、次のように明確に述べられています。
スクリーンショットを撮るコマンドは、トップレベルのブラウジングコンテキストのスクリーンショットを撮ります。ビューポート。
従来のドライバでは、フルページのスクリーンショットを生成することができました(詳細はこちら)ここ) は、古い FirefoxDriver、IEDriver などと同様です。しかし、今ではすべてが WebDriver W3C 標準を (文字通り) 実装しているため、これは当てはまりません。