2011-07-15 15 views
1

私はパワーシェルでuiテストを実行しています。クラスにpowershellを取得している、そして、UIテスト中に、ウィンドウのスクリーンショットを取る

私はこれが代替印刷SCRN

% {PrtScキー}

で行うことができますが、それが唯一のアクティブなのJPGを取るだけでIEのウィンドウのスクリーンショットを撮りたいエラーを取得します窓。

私はこの
$ H =(ゲット・プロセスをIEXPLORE).MainWindowHandle SetForegroundWindow((ゲット・プロセスを-name IEXPLORE).MainWindowHandle) 睡眠-sec 2 $ H =(ゲット・プロセスを-id $をtryied pid).MainWindowHandle

また、エラーを特定する方法の助けを借りていただければ幸いです。

function screenshot 
{ 
    param( 
    [Switch]$OfWindow   
    ) 
    begin { 
     Add-Type -AssemblyName System.Drawing 
     $jpegCodec = [Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | 
      Where-Object { $_.FormatDescription -eq "JPEG" } 
    } 
    process { 
     Start-Sleep -Milliseconds 250 
     if ($OfWindow) { 
     [Windows.Forms.Sendkeys]::SendWait("%{PrtSc}")   
     } else { 
      [Windows.Forms.Sendkeys]::SendWait("{PrtSc}")   
     } 

     Start-Sleep -Milliseconds 250 
     $bitmap = [Windows.Forms.Clipboard]::GetImage()  
     $ep = New-Object Drawing.Imaging.EncoderParameters 
     $ep.Param[0] = New-Object Drawing.Imaging.EncoderParameter ([System.Drawing.Imaging.Encoder]::Quality, [long]100) 
     $screenCapturePathBase = "$pwd\ScreenCapture" 
     $c = 0 
     while (Test-Path "${screenCapturePathBase}${c}.jpg") { 
      $c++} 

     $bitmap.Save("${screenCapturePathBase}${c}.jpg", $jpegCodec, $ep) 
    } 
} 

答えて

2

アクティブウィンドウに

を設定するあなたは違っ行う必要があるカップルのものがあります。まず、あなたは、アクティブなウィンドウをこのように設定する必要があります。

How to set foreground Window from Powershell event subscriber action

が右側のウィンドウ

次の取得、あなたはIEは、少なくとも二つのプロセスを生成するという事実に対処する必要があります。右のウィンドウをつかむ必要があります。今、あなたはスクリーンショットの2つの方法のいずれかを取ることができますスクリーンショット

を取る

$h = Get-Process | Where-Object {$_.MainWindowTitle -like "My website*"} | Select-Object -ExpandProperty MainWindowHandle 

  1. JPBlancのようにPrtScを送信しました。

    Add-Type -Assembly System.Windows.Forms 
    Start-Sleep -seconds 1 
    
    ## Capture the current window 
    [System.Windows.Forms.Sendkeys]::SendWait("%{PrtSc}") 
    
  2. Take-Screenshot script from PoschCode

2

あなたはそれが%なしだ画面全体をキャプチャすることについての世話をしてください:

Add-Type -Assembly System.Windows.Forms 
Start-Sleep -seconds 1 

## Capture the entire screen 
[System.Windows.Forms.Sendkeys]::SendWait("{PrtSc}") 

## Capture the current window 
[System.Windows.Forms.Sendkeys]::SendWait("%{PrtSc}") 
+0

私はIEのウィンドウをキャプチャするためにスクリプトを設定する方法があり期待しています。 IEウィンドウを "現在の"ウィンドウにする方法があれば –

関連する問題