目次
概要
起動しているブラウザ画面のスクリーンショットを取得し、保存までまとめて実行するメソッドです。スクリーンショットの取得と保存を分けたい場合は、Invoke-SeScreenshot(取得)とSave-SeScreenshot(保存)に分けて実行します。
PowerShellでSeleniumモジュールを利用する方法
Seleniumは多言語で利用可能なツールです。PowerShell専用でSeleniumのクラスは用意されていませんが、C#用に.NETのSeleniumは用意されています。公式には例文も無い...
コマンド(Commond)
New-SeScreenshot
代替コマンド(Alias)
SeScreenshot
構文(Syntax)
- New-SeScreenshot [-Path] <Object> [[-ImageFormat] <ScreenshotImageFormat>] [-Target <Object>] [<CommonParameters>]
- New-SeScreenshot [[-Path] <Object>] [[-ImageFormat] <ScreenshotImageFormat>] -PassThru [-Target <Object>] [<CommonParameters>]
- New-SeScreenshot -AsBase64EncodedString [-Target <Object>] [<CommonParameters>]
オプション
Name | 引数型 | 解説 | Short Example |
---|---|---|---|
Path | Object | 保存先のフルパスを文字列で指定 | New-SeScreenshot -Target $Driver -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png" |
ImageFormat | ScreenshotImageFormat | 画像形式を"Bmp","Gif","Jpeg","Png","Tiff"から指定 | New-SeScreenshot -Target $Driver -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png" |
Target | Object | ドライバーやWeb要素を指定 | New-SeScreenshot -Target $Driver -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png" |
PassThru | オブジェクトプロパティ情報を返す | New-SeScreenshot -Target $Driver -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png" --PassThru | |
AsBase64EncodedString | Base64にエンコードされた文字列を返す | New-SeScreenshot -Target $Driver --AsBase64EncodedString | |
CommonParameters | 共通パラメータ |
※ShortExampleは、動作確認ができたコードを記載しています。
Example
$shell = New-Object -ComObject Shell.Application
$DocumentDir = $shell.NameSpace("shell:Personal").Self.Path
$Driver = Start-SeChrome -Quiet
Enter-SeUrl https://programan.org/ -Driver $Driver
$Element = Get-SeElement -Target $Driver -ClassName "newmark" -Timeout 10
$actions = New-Object OpenQA.Selenium.Interactions.Actions($Driver)
$actions.MoveToElement($Element[0]).Perform()
New-SeScreenshot -Target $Driver -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png" -PassThru
New-SeScreenshot -Target $Driver -AsBase64EncodedString
Stop-SeDriver $Driver
Module
New-SeScreenshotのSelenium-Module構文を以下に掲載します。
function New-SeScreenshot {
[Alias('SeScreenshot')]
[cmdletbinding(DefaultParameterSetName = 'Path')]
param(
[Parameter(ParameterSetName = 'Path' , Position = 0, Mandatory = $true)]
[Parameter(ParameterSetName = 'PassThru', Position = 0)]
$Path,
[Parameter(ParameterSetName = 'Path', Position = 1)]
[Parameter(ParameterSetName = 'PassThru', Position = 1)]
[OpenQA.Selenium.ScreenshotImageFormat]$ImageFormat = [OpenQA.Selenium.ScreenshotImageFormat]::Png,
[Parameter(ValueFromPipeline = $true)]
[Alias("Driver")]
[ValidateIsWebDriverAttribute()]
$Target = $Global:SeDriver ,
[Parameter(ParameterSetName = 'Base64', Mandatory = $true)]
[Switch]$AsBase64EncodedString,
[Parameter(ParameterSetName = 'PassThru', Mandatory = $true)]
[Alias('PT')]
[Switch]$PassThru
)
$Screenshot = [OpenQA.Selenium.Support.Extensions.WebDriverExtensions]::TakeScreenshot($Target)
if ($AsBase64EncodedString) { $Screenshot.AsBase64EncodedString }
elseif ($Path) {
$Path = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path)
$Screenshot.SaveAsFile($Path, $ImageFormat)
}
if ($Passthru) { $Screenshot }
}