2011-07-15 47 views
1

因此,我正在運行與功率外殼的用戶界面測試。獲得PowerShell類,即在一個用戶界面測試截取即ie窗口的屏幕截圖

當我得到了我想要把剛纔的IE窗口的屏幕截圖錯誤這可以通過ALT打印SCRN做

%{PRTSC}

但是隻需要激活的JPG窗口。

我tryied此
$ H =(獲取進程IEXPLORE).MainWindowHandle SetForegroundWindow((GET-過程-name IEXPLORE).MainWindowHandle) 睡眠-sec 2 $ H =(獲取進程-id $ pid).MainWindowHandle

還有一種方式來識別ie錯誤的幫助將非常感謝。

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瀏覽器會生成至少兩個過程的事實。所以你需要抓住正確的窗口。

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

以截圖

現在你可以採取截圖的兩種方式之一。

  1. 發送PrtSc就像JPBlanc向你展示。

    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窗口成爲可用的「當前」窗口 –