powershell uiautomation tutorial
PowerShell UIAutomation-Lernprogramm: UI-Automatisierung von Desktop-Anwendungen
UIAutomation ist eine Open Source-Projekt-PowerShell-Erweiterung für GUI-Automatisierungstests. Es unterstützt Win32, Windows Form, WPF usw.
In diesem Lernprogramm konzentrieren wir uns darauf, wie PowerShell das Modul zur Implementierung der UI-Automatisierung verwendet. Um dies zu erklären, verwenden wir die Windows Form-Anwendung als Beispiel.
Was du lernen wirst:
- Erste Schritte mit Microsoft UIAutomation
- UIAutomation importieren
- UI-Automatisierung mit Beispielen
- Suchen Sie die Eltern-Kind-Beziehung und die Eigenschaften des Steuerelements
- Erweiterte Implementierung: Vereinfachen Sie den Ansatz zum Schreiben des Skripts
- Fazit:
- Literatur-Empfehlungen
Erste Schritte mit Microsoft UIAutomation
Da das Projekt die einzige Bibliothek für die PowerShell-Skripts bereitstellt, ist keine Installation erforderlich. Wir können das Modul einfach herunterladen und in das Skript importieren.
Lesen Sie auch => 35+ Beste GUI-Testtools mit vollständigen Details
Weitere Informationen zu PowerShell und zu den ersten Schritten finden Sie unter:
- PowerShell-Erweiterungen für die UI-Automatisierung
- Übersicht über die UI-Automatisierung
- Windows PowerShell
- Coole Sachen über PowerShell 5.0 in Windows 10
UIAutomation importieren
1) Laden Sie das neueste Paket von der offiziellen Website herunter und entpacken Sie es: PowerShell-Erweiterungen für die UI-Automatisierung zum la ocal Pfad,zum Beispiel, C: UIAutomation
2) Importieren Sie das Modul in das PowerShell-Skript: ( Hinweis : Wenn Sie diesen Befehl ausführen, stellen Sie sicher, dass Sie PowerShell nicht als Administrator ausführen.)
Import-Module C:UIAutomationUIAutomation.dll
Jetzt können wir die im Modul definierten Befehle verwenden, um das Testen der UI-Automatisierung zu starten.
UI-Automatisierung mit Beispielen
Beginnen wir mit einer einfachen Windows-Formularanwendung, die einige typische Steuerelemente abdeckt, die wir möglicherweise beim Testen der GUI-Automatisierung sehen.
In diesem Beispiel wird uns gesagt, dass wir die Schritte zum Senden eines Formulars mit einigen grundlegenden persönlichen Informationen automatisieren sollen:
Schritt 1) Geben Sie den Namen 'Anna Smith' ein
Schritt 2) Wählen Sie das Geschlecht 'weiblich'
Schritt 3) Wählen Sie 'Ja' als Antwort auf den Abschluss.
Schritt 4) Klicken Sie auf 'Senden'.
Das Skript dafür lautet wie folgt:
Start-Process 'Test Form' #Step1: input the name “Anna Smith” Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith' #Step2: select the gender “Female” Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAComboBox -Name 'Gender' | Invoke-UIAListItemSelectItem -ItemName 'Female' #Step3: choose “Yes” as the answer of if graduated. Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIARadioButton -AutomationId 'Graduated' -Name 'Yes'|Invoke-UIAControlClick #Step4: click “Submit” Get-UIAWindow -Name 'Test Form' | Get-UIAButton -Name 'Submit'|
Anhand des obigen Skripts können Sie wahrscheinlich erkennen, wie die Steuerelemente in der Anwendung bearbeitet werden. Lassen Sie uns weiter verstehen.
Nehmen Sie als Beispiel den ersten Schritt:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Hier ist eine Aufschlüsselung der Vorgänge in dieser Zeile:
1) Das Skript findet zuerst das obere Fenster und dann das untergeordnete Steuerelement über die Pipeline. Dies geschieht so lange, bis das Zielsteuerelement gefunden wird - das Bearbeitungsfeld (oder das Textfeld) mit dem Namen „Name“.
2) Beim Auffinden des Steuerelements wird der Typ des Steuerelements angegeben, sodass Sie wissen, welchen Befehl Sie verwenden müssen, z. Get-UIAWindow - ist ein Fenster und Get-UIAEdit - ist ein Bearbeitungs- / Textfeld.
3) Es erfordert auch eine oder mehrere Eigenschaften des Steuerelements. In diesem Beispiel verwenden wir nur Name als Eigenschaft, um das Steuerelement zu identifizieren. Hinweis : AutomationId und Class sind ebenfalls Eigenschaften, die häufig beim Suchen eines Steuerelements verwendet werden.
4) Nachdem das Zielsteuerelement gefunden wurde, verwenden wir einen anderen Befehl, um die Aktion für das Steuerelement aufzurufen. In diesem Beispiel ist es Set-UIATextBoxText, um den Text für ein Textfeld festzulegen.
Dies ist der Hauptweg für die UI-Automatisierung, um die UI-Automatisierung zu realisieren.
Point-of-Sales-Software für das iPad
Die Befehle für verschiedene Steuerelementtypen und den Befehl zum Aufrufen von Aktionen finden Sie in den Hilfedokumenten der offiziellen Website: PowerShell-Erweiterungen für die UI-Automatisierung
Der Rest der Schritte ist ähnlich. Kommen wir nun zu anderen wichtigen Themen.
Suchen Sie die Eltern-Kind-Beziehung und die Eigenschaften des Steuerelements
Es ist einfach, solche Pipelines zu schreiben, aber der wesentliche Teil besteht darin, wie die Eigenschaften und die untergeordneten Steuerelemente gefunden werden, die das Zielsteuerelement enthalten. Nach meiner Erfahrung sind dies die beiden, die ich ausprobiert habe:
# 1) Verwenden Sie UIAutomationSpy im Paket:
Das von uns heruntergeladene Paket enthält ein Tool, mit dem die Steuerelemente auf dem Desktop erfasst werden können. Wenn die Benutzeroberfläche auf dem Desktop bereit ist, öffnen Sie UIAutomat ionSpy.exe ::
- Klicken Sie auf 'Start', um die Aufnahme zu starten.
- Bewegen Sie den Cursor auf das Steuerelement, das Sie erfassen möchten.
- Wenn das Steuerelement hervorgehoben und das Skript auf der Fensteroberfläche angezeigt wird, ist die Erfassung erfolgreich.
- Klicken Sie auf 'Stop', um die Aufnahme zu stoppen.
- Klicken Sie links auf die Registerkarte 'Hierarchie' und Sie sehen die Eltern-Kind-Beziehung der Controller von oben zum Ziel
- Klicken Sie rechts auf die Registerkarte 'Skript'. Sie sehen eine vollständige Pipeline für das Steuerelement:
Bitte beachten Sie, dass wir nicht jedes Steuerelement und jede Eigenschaft aus der Pipeline einbeziehen müssen, um nach dem Zielsteuerelement zu suchen. Eigentlich ist das, was wir verwenden, ziemlich einfach (siehe das obige Beispiel):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Leider gibt es keine offizielle Silberkugel darüber, wie viele Kontrollen enthalten sein sollten. Es erfordert Versuch und Erfahrung.
Was ist nicht so toll an UIAutomationSpy:
- Es hat keine freundliche Oberfläche
- Sie müssen ein Steuerelement nach dem anderen erfassen und die gewünschten Details abrufen.
# 2) Verwenden Sie externe Tools, um die Steuerelemente für Windows Desktop zu überprüfen
Ein vorgeschlagenes Tool ist inspect.exe, das von Microsoft bereitgestellt wird. Wenn Sie das Tool öffnen, werden alle Details der Steuerelemente im Fenster angezeigt:
Was ist nicht so toll an inspect.exe?
- Es gibt keine Möglichkeit, die Details zu exportieren.
- Das UI-Automatisierungsmodul bietet einige Befehle wie Get-UIAControlChildren, um alle untergeordneten Steuerelemente abzurufen. inspect.exe kann alle Steuerelemente unter dem Fenster durchlaufen, die Leistung wird jedoch nicht für komplexe Fenster bewertet.
Erweiterte Implementierung: Vereinfachen Sie den Ansatz zum Schreiben des Skripts
Aus der obigen Einführung geht möglicherweise hervor, dass Pipelines die Hauptmethode zum Schreiben des Skripts mithilfe des Moduls sind, obwohl die Pipelines manchmal nicht so lang sind. Es gibt einen Ansatz, der es einfacher und einfacher macht. Die Hauptidee besteht darin, die Daten der Steuerelemente in eine XML-Datei zu extrahieren und die Pipelines bei Bedarf aus der XML-Datei zu verbinden.
Fahren wir mit dem obigen Beispiel fort:
Generieren Sie zunächst eine XML-Datei mit den Eigenschaften und der Eltern-Kind-Beziehung der Steuerelemente. Wir fügen Knoten für jedes erforderliche Steuerelement hinzu: Der Knotenname ist eindeutig, sodass wir das Steuerelement sofort anhand des Namens finden können, und der Befehl und seine Eigenschaften werden als Eigenschaften der Knoten festgelegt.
guter mp3 downloader für android kostenlos
Hier ist die XML-Datei für das Testformular, das wir testen:
Einige Funktionen sollten definiert werden, um die Pipelines durch Durchsuchen der XML-Datei zu verbinden und auszuführen:
function getPipeline($nodeName) { $object_xml = (Invoke-WebRequest(controls.xml')) $control = $object_xml.SelectSingleNode('//$nodeName ') $pipeline = '' do { $string = '' $string = $control.method foreach($a in $control.Attributes) { if(!$a.Name.ToLower().Equals('method')) { $string = $string + ' -' + $a.Name + ' '' +$a.Value +''' } } $ pipeline = $string + ' |' +$ pipeline $control= $control.ParentNode } while (!$control.Name.Equals('#')) return $pipeline.Remove($pipeline.length-1,1) } function setText($textbox,$value) Set-UiaEditText -text $value' Invoke-Expression $iex function selectItem($combobox,$item) { #get the pipeline and invoke the expression } function toggleRadioButton($radioButton) { #get the pipeline and invoke the expression } function click($control) { #get the pipeline and invoke the expression }
Bisher handelt es sich um fast einmalige Aufgaben, sofern sich die Steuerelemente selbst nicht ändern.
Jetzt können wir die Schritte in den folgenden Skripten automatisieren:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
Auf diese Weise können wir eine Reihe von Pipelines in den Skripten entfernen, und die Kenntnisse werden erheblich verbessert.
Empfohlene Lektüre => Einführung in das Sikuli GUI Automation Tool
Fazit:
Microsoft UIAutomation ist eine großartige Bibliothek für diejenigen, die UI-Automatisierungstests auf Windows-Desktops mit PowerShell durchführen möchten.
Die obige Einführung ist nur ein Ausschnitt aus dem Tool. Der vereinfachte Ansatz basiert auf der Idee, Daten aus Testskripten zu extrahieren. Dies ist ein guter Weg, um unsere Kenntnisse im Schreiben von Automatisierungstests zu verbessern. Erfahren Sie mehr darüber Hier .
Bitte teilen Sie Ihre Kommentare unten und wir würden gerne Erfahrungen von UIAutomation-Benutzern hören.
Literatur-Empfehlungen
- Ausführliche Eclipse-Tutorials für Anfänger
- SeeTest Automation Tutorial: Ein Handbuch für mobile Testautomatisierungstools
- DevOps-Automatisierung: Wie wird die Automatisierung in der DevOps-Praxis angewendet?
- Geb Tutorial - Browser Automation Testing Using Geb Tool
- Was ist Automatisierungstest? (Ultimativer Leitfaden zum Starten der Testautomatisierung)
- Selendroid Tutorial: Android Mobile Test Automation Framework (Teil 1)
- Katalon Studio Tutorial: Ein kostenloses Testautomatisierungstool, auf das Sie gewartet haben
- Appium Studio für Eclipse: End-to-End-Appium / Selen-Automatisierung von Eclipse