PowerShellによりGoogleChromeを操作して、URLを開きスクリーンショットを取得するサンプルコード

記事内に広告が含まれています。
《スポンサーリンク(広告)》

※エンジニアは英語必須!業界初の定額レッスン無制限!オンラインで英語を学習しませんか?

《スポンサーリンク(広告)》

PowerShellによりGoogleChromeを操作して、スクリーンショットを取得するサンプルコードを紹介します。

《スポンサーリンク(広告)》

coconalaはロゴデザイン、Webマーケティング、副業のあらゆるスキルのマーケットです(ビジネス・個人問わないサービス)

《スポンサーリンク(広告)》

仕様

PowerShellでSeleniumを実行すると、ブラウザが開き、*.pngでスクリーンショットが取得されます。

実行イメージ

準備

最初にいくつか外部のファイルを準備する必要があります。

PowerShell単体ではGoogleChromeを操作できず、Seleniumというブラウザ操作を自動化するフレームワークが必要になるからです。

必要なファイル

下記の2ファイルを、PowerShellのScriptファイル(*.ps1)と同じフォルダに格納します。

ファイル挙動ダウンロード元補足
Selenium.WebDriverブラウザに組み込まれている自動化の仕組み(Driver)を使用して、ブラウザを操作する。Selenium WebDriver
PowerShellの場合は、画面をスクロールして、C#用をダウンロードします。
「selenium.webdriver.X.X.X.nupkg」→「selenium.webdriver.4.8.1.zip」に拡張子を変更して解凍します。
Chrome Driver各ベンダーによって公開されたブラウザを操作するためのAPIを公開したライブラリ。
ベンダーによって提供されているため、標準のSeleniumには含まれていない。
ChromeDriver今回はWindows環境でGoogle Chromeを使用するので、Windows用の「chromedriver_win32.zip」をダウンロードします。
ファイル一覧

ソースコード

下記のようなソースコードを用意しています。

browsing.ps1

Webページのスクリーンショットを取得するコードです。

スクリーンショットの取得対象のWebページは外部のWebページではなく、page1.htmlとしています。

# dllパス生成
$currentPath = (Convert-Path .)
$webDriverDllPath = $currentPath + "\selenium.webdriver.4.8.1\lib\net48\WebDriver.dll"
$chromeDriverDirPath = $currentPath + "\chromedriver_win32"

# パスからdll読み込み
Add-Type -Path $webDriverDllPath

# chrome起動
$chromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($chromeDriverDirPath)

# URL開く
$chromeDriver.Url = $currentPath + "\page1.html"

# スクリーンショットの取得 
$screenShot = $chromeDriver.GetScreenshot()
$screenShot.SaveAsFile($currentPath + '\a.png')

pause

page1.html

上記の*.psでキャプチャを取る対象のWebページです。

Webページは別にhttps://~を指定してもよいので、このファイルは必須ではないです。

<html>
<head>
    <title>ページ1</title>
    <script>
    function displayAlert(){
        alert(document.getElementById('input1').value);
    }
    </script>
</head>
<body>
    ページ1です。
    <form method="post">
        <input type="text" id="input1" name="input1">
        <input type="button" id="button1" value="送信ボタン" onclick="displayAlert();">
    </form>
</body>
</html>

ファイル配置

下記のようにダウンロードして解凍したファイルと、PowerShellのScriptファイル(*.ps1)、キャプチャを取得するHTMLファイル(*.html)を同じフォルダに格納しています。

※「backup」フォルダは解凍前のファイルや、ごみファイルを個人的に取っておいただけのフォルダなので不要です(無くても動作に影響ないです)。

テスト実行

実行は右クリックメニューの「PowerShellで実行」をクリックします。

すると、ブラウザのGoogle Chromeが起動し、page1が表示されました。

ディレクトリに注目すると、a.pngのファイルが増えています。

こちらのa.pngを開くとキャプチャが取得されていることが確認できました。

タスクスケジューラと組み合わせると、定期的にキャプチャが取得出来てよいかもしれません。

あとはリンクをたどるたびにキャプチャを取っていくとか、利用方法は様々ですね。

参考情報

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows10
2PowerShell5.1
3ブラウザGoogle Chrome
バージョン: 111.0.5563.65(Official Build) (64 ビット)
4selenium.webdriver4.8.1 C#用
5chromedriver111.0.5563.64
環境一覧

以上です。

コメント

タイトルとURLをコピーしました