目次
概要
ブラウザ上のWeb要素をクリックするためのコマンドになります。リンクテキストのクリック動作やチェックボックスのクリック動作をする時に役立ちます。類似のコマンドでInvoke-SeClickがありますが、Send-SeClickは引数指定できる項目が多いです。
PowerShellでSeleniumモジュールを利用する方法
Seleniumは多言語で利用可能なツールです。PowerShell専用でSeleniumのクラスは用意されていませんが、C#用に.NETのSeleniumは用意されています。公式には例文も無い...
コマンド(Commond)
Send-SeClick
代替コマンド(Alias)
SeClick
構文(Syntax)
Send-SeClick [-Element] <IWebElement> [-JavaScriptClick] [-SleepSeconds <Object>] [-Driver <Object>] [-PassThru] [<CommonParameters>]
オプション
Name | 引数型 | 解説 | Short Example |
---|---|---|---|
Element | IWebElement | 対象要素の指定 | Send-SeClick -Element $Element[0] -JavaScriptClick -SleepSeconds 2 -PassThru |
JavaScriptClick | JavaScriptによるクリック | Send-SeClick -Element $Element[0] -JavaScriptClick -SleepSeconds 2 -PassThru | |
SleepSeconds | Object | 待機時間 | Send-SeClick -Element $Element[0] -JavaScriptClick -SleepSeconds 2 -PassThru |
Driver | Object | 利用不可(引数指定しない) | |
PassThru | オブジェクト情報を返す | Send-SeClick -Element $Element[0] -JavaScriptClick -SleepSeconds 2 -PassThru | |
CommonParameters | string | 共通パラメータ |
※ShortExampleは、動作確認ができたコードを記載しています。
オブジェクトプロパティ
Name | 出力例 |
---|---|
WrappedDriver | OpenQA.Selenium.Chrome.ChromeDriver |
TagName | |
Text | |
Enabled | |
Selected | |
Location | |
Size | |
Displayed | |
LocationOnScreenOnceScrolledIntoView | |
Coordinates | OpenQA.Selenium.Remote.RemoteCoordinates |
※ShortExampleは、動作確認ができたコードを記載しています。
Example
$Driver = Start-SeChrome -Quiet
Enter-SeUrl https://programan.org/ -Driver $Driver
$Element = Find-SeElement -Driver $Driver -ClassName "newmark"
Send-SeClick -Element $Element[0] -JavaScriptClick -SleepSeconds 2 -PassThru
Stop-SeDriver $Driver
Module
Send-SeClickのSelenium-Module構文を以下に掲載します。
function Send-SeClick {
[alias('SeClick')]
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)]
[OpenQA.Selenium.IWebElement]$Element,
[Alias('JS')]
[Switch]$JavaScriptClick,
$SleepSeconds = 0 ,
[Parameter(DontShow)]
$Driver,
[Alias('PT')]
[switch]$PassThru
)
Process {
if ($JavaScriptClick) { $Element.WrappedDriver.ExecuteScript("arguments[0].click()", $Element) }
else { $Element.Click() }
if ($SleepSeconds) { Start-Sleep -Seconds $SleepSeconds }
if ($PassThru) { $Element }
}
}