目次
概要
Clear-SeAlertはダイアログボックスをアラート型オブジェクトとしてキャッチし、処理します。ダイアログボックスは、ブラウザ操作中に出現してくる確認画面や、入力ボックスのことで、JavaScrioptで制御されています。以下、ダイアログボックスのサンプルです。
PowerShellでSeleniumモジュールを利用する方法
Seleniumは多言語で利用可能なツールです。PowerShell専用でSeleniumのクラスは用意されていませんが、C#用に.NETのSeleniumは用意されています。公式には例文も無い...
コマンド(Commond)
Clear-SeAlert
代替コマンド(Alias)
SeAccept, SeDismiss
構文(Syntax)
Clear-SeAlert [-Target <Object>] [-Action <Object>] [-PassThru] [<CommonParameters>]
オプション
Name | 引数型 | 解説 | Short Example |
---|---|---|---|
Target | Object | 対象要対象driverの指定 | Clear-SeAlert -Target $Driver -Action Dismiss -PassThru |
Action | Object | AcceptかDismissを入力。指定しない場合は、Dissmissがデフォルト設定 | Clear-SeAlert -Target $Driver -Action Dismiss -PassThru |
PassThru | ダイアログボックスに表示されている文字列を返す | Clear-SeAlert -Target $Driver -Action Dismiss -PassThru | |
CommonParameters | string | 共通パラメータ |
※ShortExampleは、動作確認ができたコードを記載しています。
Example
使用例の2パターン紹介します。基本メソッドのClear-SeAlertを使用した方法とAliasでコードを短縮した使用方法の2パターン紹介します。ダイアログボックスを出現させた後「キャンセル」を選択し、再度出現するダイアログボックスの「OK」ボタンを選択します。
Clear-SeAlertを使用した基本パターン
$Driver = Start-SeChrome -StartURL "https://www.tagindex.com/javascript/window/confirm.html" -Quiet
$Element = Get-SeElement -Target $Driver -CssSelector "#content > section.overview > figure > p > input[type=button]"
Send-SeClick -Element $Element
Start-Sleep -Seconds 2
Clear-SeAlert -Target $Driver -Action Dismiss -PassThru
Start-Sleep -Seconds 1
Clear-SeAlert -Target $Driver -Action Accept
Start-Sleep -Seconds 2
Stop-SeDriver $Driver
Alias(SeAccept, SeDismiss)使用のパターン
$Driver = Start-SeChrome -StartURL "https://www.tagindex.com/javascript/window/confirm.html" -Quiet
$Element = Get-SeElement -Target $Driver -CssSelector "#content > section.overview > figure > p > input[type=button]"
Send-SeClick -Element $Element
Start-Sleep -Seconds 2
SeDismiss -Target $Driver -PassThru
Start-Sleep -Seconds 1
SeAccept -Target $Driver
Start-Sleep -Seconds 2
Stop-SeDriver $Driver
Module
Clear-SeAlertのSelenium-Module構文を以下に掲載します。
function Clear-SeAlert {
[Alias('SeAccept', 'SeDismiss')]
param (
[parameter(ParameterSetName = 'Alert', Position = 0, ValueFromPipeline = $true)]
$Alert,
[parameter(ParameterSetName = 'Driver')]
[ValidateIsWebDriverAttribute()]
[Alias("Driver")]
$Target = $Global:SeDriver,
[ValidateSet('Accept', 'Dismiss')]
$Action = 'Dismiss',
[Alias('PT')]
[switch]$PassThru
)
if ($Target) {
try { $Alert = $Target.SwitchTo().alert() }
catch { Write-Warning 'No alert was displayed'; return }
}
if (-not $PSBoundParameters.ContainsKey('Action') -and
$MyInvocation.InvocationName -match 'Accept') { $Action = 'Accept' }
if ($Alert) { $alert.$action() }
if ($PassThru) { $Alert }
}