某PCショップ店員の覚書

勤務中に作成したプログラムやスクリプトのまとめ

PowershellでSeleniumを扱う Ver2

私のブログのアクセス集計を行った所、以下の記事が大変読まれているようでした。
saica94.hatenablog.com

この記事を書いた時は下準備が大変でしたが、Powershell向けに公開されているモジュールが存在しており、そちらを使ったほうがかなり楽に操作できるので
今回はその解説となります。
※この解説で使用するブラウザはGoogle Chromeです。

モジュールのインストール

まず、Powershell上に下記のコマンドを入力してください。

Install-Module Selenium

たったこれだけでSeleniumを扱う下準備が整います。
なお、扱うブラウザのバージョンとWebDriverのバージョンが合致していないと動作しないので必ず合致させるようにしてください。
WebDriverのダウンロードはこちらから

指定したブラウザを起動する

# Chrome
$Driver = Start-SeChrome

# Edge
$Driver = Start-SeEdge

# FireFox
$Driver = Start-SeFirefox

# ID
$Driver = Start-SeInternetExplorer

# -Headlessオプションでブラウザ非表示となる
$Driver = Start-SeChrome -Headless

指定URLへアクセスする

Enter-SeUrl "$URL" -Driver $Driver

エレメントの取得

$Element = Find-SeElement -Driver $Driver -Id "<ID>"
$Element = Find-SeElement -Driver $Driver -ClassName "<ClassName>"
$Element = Find-SeElement -Driver $Driver -TagName "<Tag_Name>"
$Element = Find-SeElement -Driver $Driver -XPath "<XPath>"
エレメント取得処理がタイムアウトになる時間を設定する
$Element = Find-SeElement -Driver $Driver -Wait -Timeout 10 -Id "btn"

取得したエレメントに対する操作

キー入力
# 通常文字列
Send-SeKeys -Element $Element -Keys "<strings>"
# 特殊文字
Send-SeKeys -Element $Element -Keys "{{ENTER}}"
エレメント or ボタンをクリックする
$Element = Find-SeElement -Driver $Driver -Id "btn"
Invoke-SeClick -Element $Element

# or
$Element = Find-SeElement -Driver $Driver -Id "btn"
$Element.Click()

スクリーンショットの撮影

$SS = Invoke-SeScreenshot -Target $Driver
Save-SeScreenshot -Screenshot $SS -Path .\test.png

終了する

Stop-SeDriver -Driver $Driver

このコマンド群の組み合わせでほとんどのブラウザ操作は自動化できます。
更に詳細なコマンドレットが知りたい場合は、下記のページを参照してください。
github.com