получаване на powershell в class ie и по време на тест на потребителския интерфейс направете екранна снимка на прозореца ie

Така че провеждам потребителски тест с Power Shell.

Когато получа грешка, искам да направя екранна снимка само на прозореца, т.е. това може да се направи с alt print scrn

%{prtsc}

но отнема само jpg от активния прозорец.

Опитах това
$h = (Get-Process iexplore).MainWindowHandle SetForegroundWindow((Get-Process -name iexplore).MainWindowHandle) sleep -sec 2 $h = (Get-Process -id $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)
    }
}

person Dennis Hayden    schedule 15.07.2011    source източник


Отговори (2)


Задаване на активния прозорец

Има няколко неща, които трябва да направите по различен начин. Първо, трябва да настроите активния прозорец по следния начин:

Как да задам действие за абонат на събитие на преден план в Powershell

Получаване на правилния прозорец

След това трябва да се справите с факта, че 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. Скрипт за правене на екранна снимка от PoschCode

person JasonMArcher    schedule 18.08.2011

Погрижите ли се за това, за да заснемете целия екран, без % :

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}")
person JPBlanc    schedule 17.07.2011
comment
Надявам се, че има начин да настроя скрипта да заснема само прозореца на IE. ако има начин да направите прозореца на IE текущия прозорец, който ще работи - person Dennis Hayden; 19.07.2011