【PowerShell】Selenium-Module Save-SeScreenshot スクリーンショットの保存

目次

概要

 起動しているブラウザで取得したスクリーンショットを保存するメソッドです。スクリーンショットを取得する場合は、Invoke-SeScreenshotでスクリーンショット画像を事前に取得しておきます。ドライバーオブジェクトやWeb要素オブジェクトでスクリーンショットを取得するメソッド(GetScreenshot)を利用してもOKです。

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

コマンド(Commond)

Save-SeScreenshot

代替コマンド(Alias)

無し

構文(Syntax)

Save-SeScreenshot [-Screenshot] <Screenshot> [-Path] <string> [[-ImageFormat] <ScreenshotImageFormat>] [<CommonParameters>]

オプション

Name引数型解説Short Example
ScreenshotScreenshotスクリーンショットオブジェクトの指定Save-SeScreenshot -Screenshot $screenshot -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png"
Pathstring保存先のフルパスを文字列で指定Save-SeScreenshot -Screenshot $screenshot -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png"
ImageFormatScreenshotImageFormat画像形式を"Bmp","Gif","Jpeg","Png","Tiff"から指定Save-SeScreenshot -Screenshot $screenshot -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png"
CommonParameters共通パラメータ

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

Example

1.Invoke-SeScreenshotを利用したスクリーンショットの取得方法例です。

$shell = New-Object -ComObject Shell.Application
$DocumentDir = $shell.NameSpace("shell:Personal").Self.Path

$Driver = Start-SeChrome -Quiet
Enter-SeUrl https://programan.org/ -Driver $Driver

$screenshot = Invoke-SeScreenshot -Target $Driver
Save-SeScreenshot -Screenshot $screenshot -ImageFormat Png -Path $DocumentDir"\PowerShell\programan.png"

Stop-SeDriver $Driver

2.GetScreenshotを利用したスクリーンショットの取得方法例です。こちらの方法では、Web要素のスクリーンショットも取得することができます。

$shell = New-Object -ComObject Shell.Application
$DocumentDir = $shell.NameSpace("shell:Personal").Self.Path

$Driver = Start-SeChrome -Quiet
Enter-SeUrl https://programan.org/ -Driver $Driver

$screenshot = $Driver.GetScreenshot()
Save-SeScreenshot -Screenshot $screenshot -ImageFormat Png -Path $DocumentDir"\PowerShell\programan_drv.png"

$Element = Get-SeElement -Target $Driver -ClassName "newmark"
$screenshot = $Element[0].GetScreenshot()
Save-SeScreenshot -Screenshot $screenshot -ImageFormat Png -Path $DocumentDir"\PowerShell\programan_ele.png"

Stop-SeDriver $Driver

Module

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

function Save-SeScreenshot {
    param(
        [Parameter(ValueFromPipeline = $true, Mandatory = $true)]
        [OpenQA.Selenium.Screenshot]$Screenshot,
        [Parameter(Mandatory = $true)]
        [string]$Path,
        [Parameter()]
        [OpenQA.Selenium.ScreenshotImageFormat]$ImageFormat = [OpenQA.Selenium.ScreenshotImageFormat]::Png)

    process {
        $Screenshot.SaveAsFile($Path, $ImageFormat)
    }
}
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次