Warning: Trying to access array offset on null in /home/c9606465/public_html/sugiyamatatsuya.com/wp-content/plugins/cta/classes/class.cta.render.php on line 492

Powershellでブラウザ自動化(Selenium)

プログラミング研修の中で、受講生のプログラムの確認・評価。
プログラムはWebプログラムで、
課題仕様通りに作られているかの確認を40~50人分する必要があり、
評価基準も一定にしたい&時間を掛けずに評価を終わらせたい。

Excel&VBAでも使ったSeleniumをPowershellで使ってみることにした。
環境構築・準備と簡単な操作コードをメモ書き。

環境情報

OS:Windows11
Powershell:Version 5.1.**
Webブラウザ:Google Chrome

ちなみに評価するプログラムはJSP Servletで作られたWebプログラム。
PowershellはOSに標準インストールされているものだったので、特に準備はしていない。

準備

PowershellからSeleniumを使ってChrome操作をするには、
Seleniumのライブラリと、Chrome用のドライバーが必要。

●Seleniumのライブラリ
ここからダウンロード。
C#用のライブラリを使うので、C#用のファイルをダウンロードする。
NuGetパッケージとしてダウンロードしてきて、拡張子をzipに変更して解凍。

●Chromeドライバー
ここからダウンロード。
基本は最新版をダウンロードすれば良いと思うが、操作するChromeのバージョンに合わせる。
Chromeは自動更新でバージョンが上がっていくので、ドライバーも更新が必要になる。

ダウンロードしたライブラリとドライバーは
Cドライブ以下にフォルダを作って保存しておく。
Cドライブ以外に置くと、dotNetのセキュリティポリシー変えないとエラーが出る。

ライブラリのロードと起動

ここからはPowershell。

ライブラリを読み込み、Chromeドライバーの場所を渡してSeleniumを起動させる。
Powershellが終了すると、Seleniumのウィンドウも閉じてしまうので、
起動確認にはポーズでも追加が必要。

using namespace OpenQA.Selenium
…
    
# ライブラリとドライバーの場所
    $webDriverDllPath = "C:\Tools\selenium.webdriver.4.10.0\lib\net48\WebDriver.dll"
    $chromeDriverDirPath = "C:\Tools\chromedriver_win32"
    #dll読み込み
    Add-Type -Path $webDriverDllPath


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

    $chromeDriver.Manage().Window.Size = New-Object System.Drawing.Size(1000,700) 

Selenium操作の一部

ここまででSeleniumウィンドウの起動ができたので、
指定URLへ遷移と、画面要素の取得、キー入力のサンプル。

# 起動で作成した chromeDriverオブジェクトに対して操作

# 指定URLへ遷移
$chromeDriver.Navigate().GoToUrl("https://google.co.jp")

# タグ名で取得(1つだけ取得、複数取得)
$ele = $chromeDriver.FindElement([By]::TagName("input"))
$ele = $chromeDriver.FindElements([By]::TagName("input"))

# nameで取得する要素を指定
$ele = $chromeDriver.FindElement([By]::Name("userName"))

# キー入力
$ele.sendkeys("あいうえお")

その他の操作をしたい場合は、ライブラリのdocumentを参照するのが良いかと。
API Documentはライブラリのダウンロードページにあります。

コメント