Skip to content

mkht/PSWebDriver

Repository files navigation

PSWebDriver

BrowserAutomationTest

Selenium WebDriverをPowerShellから使用しやすくするラッパークラス+便利な関数群

インストール方法

  1. 使用したいブラウザ用のDriverをインストールしてPATHを通しておきます
  2. このレポジトリをダウンロードしてPowerShellのモジュールディレクトリに配置します

各ブラウザ用のDriver入手先

対応プラットフォーム

  • Windows PowerShell 5.1
  • PowerShell 7.0 or later (Only on Windows)

使い方

Google Chromeを使用してDuckDuckGoを開き、"PowerShell"と検索、検索結果のスクリーンショットを取得してブラウザを終了する例

#インスタンスの生成
$Browser = New-PSWebDriver 'Chrome' #Chrome/Firefox/Edge/EdgeChromium/IE/HeadlessChrome/HeadlessFirefox
#ブラウザを起動
$Browser.Start()
#DuckDuckGoを開く
$Browser.Open('https://duckduckgo.com/')
#検索ボックスに"PowerShell"と入力
$Browser.SendKeys('id=search_form_input_homepage', 'PowerShell')
#検索ボタンをクリック
$Browser.Click('id=search_button_homepage')
#スクリーンショットを保存
$Browser.SaveScreenShot('D:\screenshot.png')
#ブラウザを閉じる
$Browser.Close()

リファレンス

PSWebDriver クラス

Selenium WebDriverをPowerShellから利用するためのラッパークラスです。
メソッド名などSelenium IDEで作成したテストケースをPowerShellスクリプトに置き換えやすくするよう意識しています。

PSWebDriverクラスのインスタンスを生成するにはNew-PSWebDriver関数を使用します。

$WebDriver = New-PSWebDriver -Name 'Chrome'

プロパティ

名前 説明
Driver 未定義 WebDriverインスタンス
ラップされていないWebDriverネイティブのメソッドを利用したい場合に使えます
BrowserOptions OpenQA.Selenium.DriverOptions ブラウザにオプションパラメータを指定する際に使用可能です
DriverService OpenQA.Selenium.DriverService ブラウザにオプションパラメータを指定する際に使用可能です

メソッド

起動/停止
名前 戻り値型 説明
Start() void ブラウザを起動します
Start([Uri]$URL) void ブラウザを起動し、$URLで指定されたページを開きます
Open([Uri]$URL) void $URLで指定されたページを開きます
Close() void カレントウィンドウを閉じます
Quit() void ブラウザを閉じます
ブラウザ設定
名前 戻り値型 説明
SetImplicitWait([int]$TimeoutInSeconds) void 要素検索やページ読込時の暗黙的な待機時間(秒)を指定します
GetWindowSize() System.Drawing.Size ブラウザのウィンドウサイズを取得します
SetWindowSize([System.Drawing.Size]$Size) void ブラウザのウィンドウサイズを変更します
SetWindowSize([int]$Width,[int]$Height) void ブラウザのウィンドウサイズを変更します
GetBrowserInfo() HashTable 起動中ブラウザの名前、バージョン、プラットフォーム情報を取得します
要素検索 / 情報取得
名前 戻り値型 説明
FindElement([string]$SelectorExpression) Object $SelectorExpressionで指定されるページ内の要素を取得します
FindElements([string]$SelectorExpression) Object[] $SelectorExpressionにマッチする全ての要素を取得します
IsElementPresent([string]$SelectorExpression) bool $SelectorExpressionで指定される要素が存在するか確認します
GetText([string]$SelectorExpression) string $SelectorExpressionで指定される要素のinnerTextを取得します
GetAttribute([string]$SelectorExpression, [string]$Attribute) string $SelectorExpressionで指定される要素内の$Attribute属性値を取得します
GetTitle() string 現在開いているページタイトルを取得します
GetLocation() string 現在開いているページURLを取得します
IsAlertPresent() bool アラートが表示されているか確認します
操作
名前 戻り値型 説明
SendKeys([string]$Target, [string]$Value) void $Target(SelectorExpression)で指定される要素に対して$Valueを入力します
特殊キーの送信については下部の「特殊キーの入力について」を参照してください
ClearAndType([string]$Target, [string]$Value) void $Target(SelectorExpression)で指定される要素に対して$Valueを入力します
既存の内容をクリアしてから入力する点がSendKeys()との違いです
(Selenium IDEのTypeコマンドに相当します)
Click([string]$Target) void $Target(SelectorExpression)で指定される要素をクリックします
DoubleClick([string]$Target) void $Target(SelectorExpression)で指定される要素をダブルクリックします
RightClick([string]$Target) void $Target(SelectorExpression)で指定される要素を右クリックします
Select([string]$Target, [string]$Value) void $Target(SelectorExpression)で指定されるSelect要素から$Valueをテキストに持つ要素を選択します
CloseAlert() void アラートを閉じます
CloseAlertAndGetText([bool]$Accept) string アラートテキストを取得し、アラートを閉じます
$Acceptでアラートに対するOK or Cancelを指定できます
待機
名前 戻り値型 説明
WaitForPageToLoad([int]$Timeout) bool ページの読み込みが完了するか、$Timeoutで指定された秒数が経過するまで待機します
読み込み完了の場合は$true、タイムアウトの場合は$falseを返します
WaitForElementPresent([string]$Target, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素が見つかるか、$Timeoutで指定された秒数が経過するまで待機します
要素が見つかった場合は$true、タイムアウトの場合は$falseを返します
WaitForNotElementPresent([string]$Target, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素が見つからないか、$Timeoutで指定された秒数が経過するまで待機します
WaitForValue([string]$Target, [string]$Value, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素のvalue属性が$Valueで指定された値と一致するか、$Timeoutで指定された秒数が経過するまで待機します
WaitForNotValue([string]$Target, [string]$Value, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素のvalue属性が$Valueで指定された値と異なるか、$Timeoutで指定された秒数が経過するまで待機します
WaitForText([string]$Target, [string]$Value, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素の要素値が$Valueで指定された値と一致するか、$Timeoutで指定された秒数が経過するまで待機します
WaitForNotText([string]$Target, [string]$Value, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素の要素値が$Valueで指定された値と異なるか、$Timeoutで指定された秒数が経過するまで待機します
WaitForVisible([string]$Target, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素が表示されるか、$Timeoutで指定された秒数が経過するまで待機します
WaitForNotVisible([string]$Target, [int]$Timeout) bool $Target(SelectorExpression)で指定される要素が表示されなくなるか、$Timeoutで指定された秒数が経過するまで待機します
WaitForTitle([string]$Value, [int]$Timeout) bool 現在のページタイトルが$Valueと一致するか、$Timeoutで指定された秒数が経過するまで待機します
WaitForNotTitle([string]$Value, [int]$Timeout) bool 現在のページタイトルが$Valueと異なるか、$Timeoutで指定された秒数が経過するまで待機します
Pause([int]$WaitTimeInMilliSeconds) void $WaitTimeInMilliSecondsで指定された時間(ミリ秒)待機します
([System.Threading.Thread]::Sleep()と同等です)
スクリプト実行
名前 戻り値型 説明
ExecuteScript([string]$Script) string ページ上でJavaScriptを実行します
ExecuteScript([string]$Target, [string]$Script) string $Target(SelectorExpression)で指定される要素に対してJavaScriptを実行します
スクリーンショット
名前 戻り値型 説明
SaveScreenShot([string]$FileName) void スクリーンショットを保存します
画像形式はPNGです
SaveScreenShot([string]$FileName, [string]$ImageFormat) void 画像形式を指定してスクリーンショットを保存します
$ImageFormatに指定可能な値はPng,Jpeg,Gif,Tiff,Bmpです
StartAnimationRecord([int]$Interval) void ブラウザ表示の動画記録を開始します
$Interval(ミリ秒)で指定した間隔で記録します
記録間隔の最小値は500msです
最大1200フレームまで記録できます
StopAnimationRecord() void StartAnimationRecord()で開始した動画記録を終了します
記録された動画は破棄されます
StopAnimationRecord([string]$FileName) void StartAnimationRecord()で開始した動画記録を終了し、ファイルに保存します
動画形式はアニメーションGIFです

SelectorExpressionについて

Webページ上の特定要素を指定するためのパターン文字列です。
Selenium IDEのlocatorに相当します。書式もlocatorとほぼ同等です。
以下の7種類が使用可能です。

  • IDパターン
    id属性値を指定して要素を特定します。
    書式は"id=idvalue"です。

  • Nameパターン
    name属性値を指定して要素を特定します。
    書式は"name=elementname"です。

  • Tagパターン
    DOMタグを指定して要素を特定します。
    書式は"tag=tagname"です。

  • ClassNameパターン
    Class名を指定して要素を特定します。
    書式は"classname=classname"です。

  • LinkTextパターン
    LinkのTextを指定して要素を特定します。※完全一致
    書式は"link=linktext"です。

  • XPathパターン
    XPath構文を使用して要素を特定します。
    書式は"xpath=xpath"です。
    SelectorExpressionが/で始まる場合もXPathパターンとみなされます。
    "xpath=/html/body/h1""/html/body/h1"は同等です)

  • CSSセレクタパターン
    CSSセレクタを使用して要素を特定します。
    書式は"css=selector"です。


テキスト検索パターンについて

WaitForText()WaitForValue()など要素値を検証する一部のメソッドでは検索対象文字列に特殊な書式を使用することで検索パターンを指定することができます。

  • グロビングパターン
    いわゆるワイルドカード検索です。PowerShellの-like演算子に相当します。
    特殊な書式を使用しない場合はデフォルトでグロビングパターンが使用されます。
    明示的に指定する場合は検索文字列の前にglob:を付けます。
    例) glob:sometext*

  • 正規表現パターン
    正規表現を用いて検索します。PowerShellの-match演算子に相当します。
    検索文字列の前にregexp:を付けます。
    例) regexp:^Number[0-9]

  • 完全一致パターン
    完全一致検索を行います。PowerShellの-eq演算子に相当します。
    *(アスタリスク)などの特殊文字を検索したい場合に使用します。
    検索文字列の前にexact:を付けます。
    例) exact:***asterisk****


特殊キーの入力について

SendKeys()ClearAndType()でEnterキーや矢印キーなどの特殊キーを送信する場合は、${KEY_CODE}という書式を使用します。
使用可能なKEY_CODEの一覧はこちら

例)SendKeys()メソッドを使用してABC[Backspace][Enter]と入力する例

$Browser.SendKeys('id=target', 'ABC${KEY_BACKSPACE}${KEY_ENTER}')

ライセンス

Copyright (c) 2021 mkht PSWebDriver is released under the MIT License https://github.com/mkht/PSWebDriver/blob/master/LICENSE

PSWebDriver includes these software / libraries.

  • Selenium.WebDriver Copyright (c) Software Freedom Conservancy Licensed under the Apache 2.0 License.

  • Selenium.Support Copyright (c) Software Freedom Conservancy Licensed under the Apache 2.0 License.

  • edge-selenium-tools Copyright (c) Microsoft Licensed under the Apache 2.0 License.

  • AnimatedGif Copyright (c) mrousavy Licensed under the MIT License.

About

PowerShell Selenium WebDriver module

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published