目次
概要
起動しているブラウザにフレームがある場合、フレームの移動に使用するメソッドになります。
PowerShellでSeleniumモジュールを利用する方法
Seleniumは多言語で利用可能なツールです。PowerShell専用でSeleniumのクラスは用意されていませんが、C#用に.NETのSeleniumは用意されています。公式には例文も無い...
コマンド(Commond)
Switch-SeFrame
代替コマンド(Alias)
SeFrame
構文(Syntax)
- Switch-SeFrame [-Frame] <Object> [-Target <Object>] [<CommonParameters>]
- Switch-SeFrame -Parent [-Target <Object>] [<CommonParameters>]
- Switch-SeFrame -Root [-Target <Object>] [<CommonParameters>]
オプション
Name | 引数型 | 解説 | Short Example |
---|---|---|---|
Target | Object | 対象ドライバーの指定 | Switch-SeFrame -Target $Driver -Frame "frame-top" |
Frame | Object | フレーム名の指定 | Switch-SeFrame -Target $Driver -Frame "frame-middle" |
Parent | string | 親フレームの指定 | Switch-SeFrame -Target $Driver -Parent |
Root | string | ルート(全体)フレームの指定 | Switch-SeFrame -Target $Driver -Root |
CommonParameters | 共通パラメータ |
※ShortExampleは、動作確認ができたコードを記載しています。
Example
$Driver = Start-SeChrome -Quiet
Enter-SeUrl "https://the-internet.herokuapp.com/nested_frames" -Driver $Driver
#上段
Switch-SeFrame -Target $Driver -Frame "frame-top"
$Element = Get-SeElement -Target $Driver -TagName "frame"
Write-Host "上段フレーム数:"$Element.Count
#上段真中
Switch-SeFrame -Target $Driver -Frame "frame-middle"
$Element = Get-SeElement -Target $Driver -Id "content"
Write-Host "移動先フレーム名:"$Element.Text
#親フレーム
Switch-SeFrame -Target $Driver -Parent
$Element = Get-SeElement -Target $Driver -TagName "frame"
Write-Host "親(上段)フレーム数:"$Element.Count
#全体フレーム
Switch-SeFrame -Target $Driver -Root
$Element = Get-SeElement -Target $Driver -TagName "frame"
Write-Host "全体フレーム数:"$Element.Count
Start-Sleep 2
Stop-SeDriver $Driver
Module
Switch-SeFrameのSelenium-Module構文を以下に掲載します。
function Switch-SeFrame {
[Alias('SeFrame')]
param (
[Parameter(Mandatory = $true, ParameterSetName = 'Frame', Position = 0)]
$Frame,
[Parameter(Mandatory = $true, ParameterSetName = 'Parent')]
[switch]$Parent,
[Parameter(Mandatory = $true, ParameterSetName = 'Root')]
[Alias('defaultContent')]
[switch]$Root,
[Parameter(ValueFromPipeline = $true)]
[Alias("Driver")]
[ValidateIsWebDriverAttribute()]
$Target = $Global:SeDriver
)
if ($frame) { [void]$Target.SwitchTo().Frame($Frame) }
elseif ($Parent) { [void]$Target.SwitchTo().ParentFrame() }
elseif ($Root) { [void]$Target.SwitchTo().defaultContent() }
}