2011-01-20 12 views
18

Sto cercando un software che combini la registrazione macro con le funzionalità di acquisizione degli screenshot.Acquisire automaticamente schermate della finestra del programma

Abbiamo un manuale del software con un numero di schermate. Quando viene rilasciata una nuova versione del software, dobbiamo aggiornare la maggior parte degli screenshot e dobbiamo farlo manualmente. Ora abbiamo iniziato a tradurre il manuale in diverse lingue e il numero di schermate da prendere è aumentato di dieci volte. Vorremmo automatizzare questo processo.

Ci sarà una macro registrata o qualcosa che fa clic sul pulsante all'interno del nostro software e prende screenshot della finestra del programma. Meglio ancora, possiamo specificare il nome di ogni screenshot singolarmente anche se è meno importante.

Esiste una cosa del genere?

+0

Consiglio di scegliere come target l'API di automazione interfaccia utente Microsoft in questo scenario specifico, poiché si dispone di codici sorgente completi e supporto del ciclo di vita dell'appicazione nell'organizzazione. È necessario registrare gli script dell'interfaccia utente, utilizzando il fornitore di automazione personalizzato, in grado di registrare e riprodurre le automazioni dell'interfaccia utente, quindi è possibile aggiungere il comportamento personalizzato come schermate, dal momento che api di automazione dispone di 3 modi per valutare l'interfaccia utente in modo programmatico: dalla proprietà AutomationId, utilizzando lo schermo punti (clic del mouse) e elemento visivo dell'albero (attraversamento dell'interfaccia utente). –

risposta

3

Io uso AutoIt più captdll.dll per tutte le attività di automazione della GUI di Windows.

Esempio:

Run("Notepad.exe", @WindowsDir, @SW_MAXIMIZE) ; Open NOTEPAD 
Sleep(1000) 
Send("Just a Test") ; Send some text to notepad 

; Save the screen to test.jpg 
$anPos = WinGetClientSize("") 
$nLeft = 0 
$nTop = 0 
$nRight = $anPos[0] 
$nBottom = $anPos[1] 

$sFileName = "test.jpg" 
DllCall("captdll.dll", "int:cdecl", "CaptureScreen", "str", $sFileName, "int", 85) 

In questo modo è possibile automatizzare l'intero processo di cattura screenshot:

  • avviare l'applicazione con Run
  • selezionare ciascuna delle vostre opzioni di menu con Invia
  • completa dati di ogni schermata anche con Send
  • acquisizione con DllCall ("captdll. dll" ....)

È inoltre possibile aggiungere logica condizionale, loop, ecc

2

Sì. Vuoi software di test automatici, che possono fare tutto questo e testare il tuo prodotto.

http://en.wikipedia.org/wiki/List_of_GUI_testing_tools

+0

Molto dipende dagli strumenti a cui sei abituato. Esistono strumenti che possono essere programmati in tutto, da Perl, Java, C#, VB e JavaScript a Ruby. Prendi in considerazione AutoIt ad esempio, come in questa domanda: http://stackoverflow.com/questions/370673/taking-screenshots-of-an-application-using-wsh-script – Ben

+0

Ben, sono a conoscenza degli strumenti di test della GUI. La mia domanda non riguarda il test, anche se si avvicina. La domanda è quale software può camminare attraverso il software di Windows e prendere screenshot della finestra del programma. –

+0

Avresti dovuto menzionare la piattaforma in precedenza. Stavo per parlare di xmacro ... – Quaternion

2

Testing Anywhere sembra avere le funzionalità necessarie. Alcune parole da loro sito web:

"capacità di registrazione GUI basata potenti e un no-programmazione dell'interfaccia utente richiesto consente ai tester di configurare rapidamente anche i casi di test complessi" ...

"rapporti di registro visivi: Testing Anywhere di La potente opzione di visualizzazione prende screenshot per creare log visivi durante il runtime. " (see here)

Si potrebbe anche provare qualcosa di più semplice e (più economico!), Come Jitbit Macro Recorder che ti permette di riprodurre registrate di macro (tastiera e mouse) e quindi utilizzare il tasto Shift-PrintScreen nella macro per fare screenshot. Ha anche un editor di script macro.

2

Se si tratta di un'app Web, è possibile utilizzare Selenium. V'è un tool simili per Visual Studio chiamato Test Automation FX

2

yoiu può guardare in esistenti Windows Automation API : UI Automation, documentazione MSDN

Requisiti Run-Time

UI Automation è supportato dai seguenti sistemi operativi: Windows XP, Windows Server 2003, Windows Server 2003 R2, Windows Vista, Windows 7, Windows Server 2008 e Windows Server 2008 R2.

Le applicazioni client, da semplici script di test a robuste utilità di registrazione e riproduzione, possono richiedere l'accesso a elementi che non sono attualmente istanziati, come una finestra di dialogo di apertura file o una voce di menu e quindi non esistono nell'albero di automazione dell'interfaccia utente. Questi elementi possono essere istanziati solo riproducendo, o "riproducendo", una sequenza specifica di azioni dell'interfaccia utente (UI) attraverso l'uso di proprietà di automazione dell'interfaccia utente come AutomationID, pattern di controllo e listener di eventi. Vedere Test Script Generator Sample per un esempio che utilizza Microsoft UI Automation per generare script di test in base all'interazione dell'utente con l'interfaccia utente (UI).

È possibile utilizzare AutomationIdProperty all'interno del progetto Visual Studio esistente.

Implementazione di automazione interfaccia utente in un test Applicazione

  • aggiungere i riferimenti di automazione interfaccia utente.

Le DLL di automazione interfaccia utente necessarie per i client di automazione interfaccia utente sono elencate qui.

UIAutomationClient.dll fornisce l'accesso alle API lato client di automazione interfaccia utente.

UIAutomationClientSideProvider.dll offre la possibilità di automatizzare i controlli Win32. Vedi Supporto per l'automazione dell'interfaccia utente per i controlli standard.

UIAutomationTypes.dll fornisce accesso ai tipi specifici definiti in UI Automation.

  • Aggiungere lo spazio dei nomi System.Windows.Automation.

Questo spazio dei nomi contiene tutto ciò che i client di automazione UI devono utilizzare le funzionalità di UI Automation eccetto la gestione del testo.

  • Aggiungere lo spazio dei nomi System.Windows.Automation.Text.

Questo spazio dei nomi contiene tutto ciò di cui i client di automazione interfaccia utente devono utilizzare le funzionalità di gestione del testo dell'interfaccia utente.

  • trovare i controlli di interesse

script di test automatizzati individuare elementi di automazione interfaccia utente che rappresentano i controlli di interesse all'interno della struttura di automazione.

Ci sono diversi modi per ottenere elementi di automazione interfaccia utente con il codice.

Interroga l'interfaccia utente utilizzando un'istruzione condizione. Questo è in genere in cui viene utilizzata la proprietà AutomationIdProperty neutrale. Nota Una proprietà AutomationId può essere ottenuta utilizzando uno strumento come UISpy.exe (UI Spy) che è in grado di dettagliare le proprietà di controllo dell'interfaccia utente di un controllo.

utilizzare la classe TreeWalker per attraversare l'intero albero UI Automation o un sottoinsieme di esso.

Messa a fuoco traccia.

Utilizzare hWnd del controllo.

Usa posizione dello schermo, ad esempio la posizione del cursore del mouse.

Vedi Obtaining UI Automation Elements

  • ottenere disegni di controllo

modelli di controllo espongono comportamenti comuni per i controlli funzionalmente simili.

Dopo aver individuato i controlli che richiedono il test, gli script di test automatici ottengono i modelli di controllo di interesse da quegli elementi di automazione dell'interfaccia utente. Ad esempio, il modello di controllo InvokePattern per la funzionalità di pulsante tipica o il pattern di controllo di WindowPattern per la funzionalità della finestra.

Vedere Panoramica dei modelli di controllo automazione UI.

  • automatizzare l'interfaccia utente

script di test automatizzati possono ora controllare qualsiasi interfaccia utente di interesse da parte di un framework di interfaccia utente con le informazioni e le funzionalità esposte dai modelli di controllo di automazione interfaccia utente.

Strumenti e tecnologie correlate

Ci sono una serie di strumenti correlati e le tecnologie che supportano il test automatizzati con UI Automation.

UISpy.exe (UI Spy) è un'applicazione GUI (graphical user interface) che può essere utilizzata per raccogliere informazioni di automazione dell'interfaccia utente per lo sviluppo e il debug del provider e del client. UI Spy è incluso nel kit di sviluppo software di Windows (SDK).

UIAutoCmd è uno strumento da riga di comando con funzionalità simili a UI Spy.

MSAABridge espone le informazioni di automazione interfaccia utente ai client Active Accessibility. L'obiettivo principale di collegare l'automazione dell'interfaccia utente all'accessibilità attiva consiste nel consentire ai client esistenti di accessibilità attiva di interagire con qualsiasi framework che abbia implementato l'automazione dell'interfaccia utente. Sicurezza

Per informazioni sulla sicurezza, vedere Panoramica sulla sicurezza dell'interfaccia utente.

0

vorrei utilizzare lo strumento Open Source Sikuli. Linguaggio di scripting abbastanza semplice o puoi usare le loro classi e scrivere il tuo codice java.

Ecco la documentazione per afferrare una parte dello schermo: http://sikuli.org/docx/screen.html#capturing

Il bonus è che questo è supportato su Windows, Linux e Mac!

Problemi correlati