【PowerShell】Selenium-Module Invoke-SeScreenshot スクリーンショットの取得

目次

概要

 起動しているブラウザ画面のスクリーンショットを取得するメソッドです。スクリーンショットを保存する場合は、Save-SeScreenshotでスクリーンショット画像を保存します。ドライバーオブジェクトやWeb要素オブジェクトでもスクリーンショットを取得するメソッド(GetScreenshot)があります。

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

コマンド(Commond)

Invoke-SeScreenshot

代替コマンド(Alias)

無し

構文(Syntax)

Invoke-SeScreenshot [[-Target] <Object>] [-AsBase64EncodedString] [<CommonParameters>]

オプション

Name引数型解説Short Example
TargetObjectドライバーやWeb要素を指定$screenshot = Invoke-SeScreenshot -Target $Driver
AsBase64EncodedStringBase64にエンコードされた文字列を返すInvoke-SeScreenshot -Target $Driver -AsBase64EncodedString
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

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

function Invoke-SeScreenshot {
    param(
        [Parameter(ValueFromPipeline = $true)]
        [Alias("Driver")]
        [ValidateIsWebDriverAttribute()]
        $Target = $Global:SeDriver,

        [Parameter(Mandatory = $false)]
        [Switch]$AsBase64EncodedString
    )
    $Screenshot = [OpenQA.Selenium.Support.Extensions.WebDriverExtensions]::TakeScreenshot($Target)
    if ($AsBase64EncodedString) {
        $Screenshot.AsBase64EncodedString
    }
    else {
        $Screenshot
    }
}
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次