注意点
プログラムの実行については、すべて自己責任で行ってください。実行により発生した、いかなる直接的または間接的被害について、作者はその責任を負いません。
Powershellのバージョン
5.1
使用するモジュール
PowerShellget 2.2.5
Selenium 4.0.0-preview3
参考にした記事
https://qiita.com/_Sasaki_/items/91224e038ae565fb1a83
https://qiita.com/_Sasaki_/items/7643f5e144641265e8d7
(以下はログイン要の記事)
https://news.mynavi.jp/techplus/article/powershell_core_--234/
モジュールのインストール(準備含む)
(準備)CurrentUserの権限をUnrestricted→RemoteSignedに変更
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
(準備)PowerShellgetのバージョンを更新
Install-Module PowerShellGet -Force -AllowClobber -Scope CurrentUser
Seleniumをインストール
Install-Module -Name Selenium -Force -AllowPrerelease -Scope CurrentUser
もしSeleniumに同梱されている各ブラウザのWebDriverが、使用するブラウザのバージョンと合っていなければ、該当するバージョンのWebDriverをダウンロードして置き換える。
▼配布元URLは以下
Edge: https://developer.microsoft.com/ja-jp/microsoft-edge/tools/webdriver/?form=MA13LH#downloads
Chrome: https://googlechromelabs.github.io/chrome-for-testing/
Seleniumを使ってみる
今回はWebサイトにログインしてみる。
サンプルとして以下のWebサイトを使用。
https://hotel.testplanisphere.dev/ja/index.html
ブラウザを指定してURLを開く
Start-SeDriver -Browser Edge -StartURL 'https://hotel.testplanisphere.dev/ja/index.html'
要素の取得
> XPathで要素を取得
$go_login_page_button = Get-SeElement -By XPath -Value '//*[@id="login-holder"]/a'
- XPathとは?
XPath (XML Path Language)は、XMLやHTMLドキュメントのツリー構造から特定の要素や属性値を選択するための言語です。これは特にWebページの情報取得において有用で、Webページは通常HTMLで記述されています。
ブラウザ(Chrome、Firefoxなど)を使用してWebページのHTMLを表示する際には、F12キーを押すことで対応するHTMLドキュメントに簡単にアクセスでき、XPathを利用して特定のデータを抽出することが可能です。
https://www.octoparse.jp/blog/xpath-introduction
XPathの取得方法(Edgeの場合)
XPathを取得したい要素の上で右クリック→「開発者用ツールで調査する」→開発者用ペインが開き、該当箇所が自動選択される→選択されたコード上で右クリック→コピー→XPathのコピーで取得できます。
取得した要素のクリック
Invoke-SeClick -Element $go_login_page_button
文字を入力
> 入力したい要素を取得
$login_id_area = Get-SeElement -By XPath -Value '//*[@id="email"]'
> 指定した文字を取得した要素に入力
Invoke-SeKeys -Element $login_id_area -Keys 'sakura@example.com'
> 入力したい要素を取得
$login_password_area = Get-SeElement -By XPath -Value '//*[@id="password"]'
> 指定した文字を取得した要素に入力
Invoke-SeKeys -Element $login_password_area -Keys 'pass1234'
(おまけ)
ログイン情報を入力しただけでは先に進めないため、ログインボタンを押す必要がある。
> クリックしたい要素を取得
$login_submit_button = Get-SeElement -By XPath -Value '//*[@id="login-button"]'
> 取得した要素のクリック
Invoke-SeClick -Element $login_submit_button
プロセスを終了
Stop-SeDriver