PowerShellにより外部ライブラリのSeleniumを使用しGoogleChromeを操作してみました。
PowerShellスクリプトの内容は、テキストボックスに入力してボタンを押下するという、ありがちな操作です。
仕様
PowerShellでSeleniumを実行すると、HTML要素を取得し自動的にブラウザを操作することができます。
今回は例として、以下のようなテキストボックスとボタンを用意したHTML画面を用意します。
そして、PowerShellからテキストボックスに値を格納し、ボタンを押下してみます。
また、JavaScriptによりボタン押下時に、テキストボックスの値が出現するようにしてあります。
準備
最初にいくつか外部のファイルを準備する必要があります。
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」をダウンロードします。 |
ソースコード
自前で用意するソースコードはhtmlファイルと、PowerShellのScriptファイル(*.ps1)の2つです。
page1.html
中身はテキストボックスとボタンが配置されています。
ボタンを押下すると、JavaScriptのdisplayAlert()が実行され、テキストボックスの中身が表示されます。
<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>
browsing.ps1
下記のような順でHTMLファイルを操作します。
HTMLを開く部分はURLでも大丈夫です。
- GoogleChromeを起動します。
- 同じディレクトリの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"
#テキストボックスに値入力
$element = $chromeDriver.FindElement([OpenQA.Selenium.By]::Id("input1"))
$element.sendKeys("あいうえお");
# ボタン押下
$chromeDriver.FindElement([OpenQA.Selenium.By]::Id("button1")).click()
pause
ファイル配置
下記のようにダウンロードして解凍したファイルと、PowerShellのScriptファイル(*.ps1)、操作するHTMLファイル(*.html)を同じフォルダに格納しています。
※「backup」フォルダは解凍前のファイルや、ごみファイルを個人的に取っておいただけのフォルダなので不要です(無くても動作に影響ないです)。
テスト実行
実行は右クリックメニューの「PowerShellで実行」をクリックします。
すると、ブラウザのGoogle Chromeが起動しました。
PowerShellによりボタンが自動で押下され、アラートでテキストボックスの値が出力されることが確認できました。
「OK」ボタンを押下すると、テキストボックスの内容も確認できます。
参考情報
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | PowerShell | 5.1 |
3 | ブラウザ | Google Chrome バージョン: 111.0.5563.65(Official Build) (64 ビット) |
4 | selenium.webdriver | 4.8.1 C#用 |
5 | chromedriver | 111.0.5563.64 |
以上です。
コメント