【PowerShell】Selenium-Module Switch-SeWindow ウィンドウの移動

目次

概要

 Chromeドライバで起動したブラウザにて複数ウィンドウを開いている場合、ウィンドウハンドル名を指定してウィンドウを移動することができます。ウィンドウハンドル名は事前にGet-SeWindowで取得しておきます。複数ウィンドウを開いている場合、Get-SeWindowはウィンドウハンドル名を配列に格納します。

 PowerShellでSeleniumを利用するに当たって、ある程度簡易的にSeleniumを利用できる様に専用のモジュールがGitHubに用意されています。いきなりPowerShellでSeleniumを扱うより、Seleniumを-Moduleを利用した方が簡単にPowerShellでSleniumを利用することができます。環境構築するには、以下ページを参照してみてください。

コマンド(Commond)

Switch-SeWindow

代替コマンド(Alias)

無し

構文(Syntax)

Switch-SeWindow [[-Target] <IWebDriver>] [-Window] <Object> [<CommonParameters>]

オプション

Name引数型解説Short Example
TargetIWebElement対象要対象driverの指定Switch-SeWindow -Target $Driver -Window $winHandle[1]
WindowObjectウィンドウハンドル名の指定Switch-SeWindow -Target $Driver -Window $winHandle[1]
CommonParametersstring共通パラメータ

※ShortExampleは、動作確認ができたコードを記載しています。

Example

$Driver = Start-SeChrome -Quiet
Enter-SeUrl https://programan.org/ -Driver $Driver
$Element = Get-SeElement -Target $Driver -ClassName "newmark" -Timeout 10

[OpenQA.Selenium.Interactions.Actions]$actions = New-Object OpenQA.Selenium.Interactions.Actions ($Driver)
$actions.MoveToElement($Element).KeyDown([OpenQA.Selenium.Keys]::Control).Click($Element).Perform()

$winHandle = Get-SeWindow -Target $Driver
Start-Sleep -Seconds 2
Switch-SeWindow -Target $Driver -Window $winHandle[1]
Start-Sleep -Seconds 3

Stop-SeDriver $Driver

Module

Switch-SeWindowのSelenium-Module構文を以下に掲載します。

function Switch-SeWindow {
    param(
        [Parameter(Mandatory = $false, ValueFromPipeline = $true)]
        [Alias('Driver')]
        [OpenQA.Selenium.IWebDriver]
        $Target = $Global:SeDriver,

        [Parameter(Mandatory = $true)]$Window
    )

    process {
        $Target.SwitchTo().Window($Window) | Out-Null
    }
}
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。

目次