powershell uiautomation tutorial
PowerShell UIAutomation Eğitimi: Masaüstü Uygulamalarının UI Otomasyonu
UIAutomation, GUI otomasyon testleri için açık kaynaklı bir proje PowerShell uzantısıdır. Win32, Windows Form, WPF ve benzerlerini destekler.
Bu eğiticide, PowerShell'in modülü kullanıcı arabirimi otomasyonunu uygulamak için nasıl kullandığına odaklanacağız. Bunu açıklamak için Windows Form uygulamasını örnek olarak kullanacağız.
Ne öğreneceksin:
- Microsoft UIAutomation'a başlarken
- UIAutomation'ı İçe Aktar
- Örneklerle UI Otomasyonu
- Üst-alt ilişkisini ve denetimin özelliklerini bulun
- Gelişmiş uygulama: senaryo yazma yaklaşımını basitleştirin
- Sonuç:
- Önerilen Kaynaklar
Microsoft UIAutomation'a başlarken
Proje PowerShell betikleri için tek kitaplık sağladığından kurulum gerektirmez, sadece modülü indirip betiğe aktarabiliriz.
Ayrıca => okuyun Tam Detaylarla 35+ En İyi GUI Test Aracı
PowerShell hakkında daha fazla bilgi edinmek ve onunla nasıl başlayacağınızı anlamak için şu adrese göz atın:
- UI Otomasyonu PowerShell Uzantıları
- UI Otomasyonuna Genel Bakış
- Windows PowerShell
- Windows 10'da PowerShell 5.0 hakkında harika şeyler
UIAutomation'ı İçe Aktar
1) En son paketi resmi web sitesinden indirin ve açın: UI Otomasyonu PowerShell Uzantıları la ocal yola,Örneğin, C: UIAutomation
2) Modülü PowerShell betiğine aktarın: ( Not : Bu komutu çalıştırdığınızda, PowerShell'i Yönetici olarak çalıştırmadığınızdan emin olun)
Import-Module C:UIAutomationUIAutomation.dll
Artık modülde tanımlanan komutları UI otomasyon testine başlamak için kullanabiliriz.
Örneklerle UI Otomasyonu
GUI otomasyon testinde görebileceğimiz bazı tipik kontrolleri kapsayan basit bir Windows form uygulamasıyla başlayalım.
Bu örnekte, bazı temel kişisel bilgileri içeren bir form gönderme adımlarını otomatikleştirmemiz söylendi:
Aşama 1) 'Anna Smith' adını girin
Adım 2) 'Kadın' cinsiyetini seçin
Aşama 3) Mezunsanız yanıtı olarak 'Evet' i seçin.
Adım 4) 'Gönder' i tıklayın
Bunu yapacak komut dosyası şu şekildedir:
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'|
Muhtemelen yukarıdaki komut dosyasından uygulamadaki kontrolleri nasıl işlediğini anlayabilirsiniz. Biraz daha anlayalım.
Örnek olarak ilk adımı atın:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
İşte bu satırda neler olduğuna dair bir döküm:
1) Komut dosyası ilk olarak üst pencereyi bulur ve ardından ardışık düzen aracılığıyla alt kontrolünü bulur. Bunu, hedef denetimi bulana kadar yapar - 'Ad' adlı düzenleme kutusu (veya metin kutusu).
2) Kontrolü bulurken, hangi komutu kullanacağınızı bilmeniz için kontrolün türünü talep eder, ör. Get-UIAWindow - bir pencere ve Get-UIAEdit - bir düzenleme / metin kutusudur.
3) Aynı zamanda kontrolün bir veya daha fazla özelliğini gerektirir. Bu örnekte, denetimi tanımlamak için özellik olarak yalnızca Ad'ı kullanıyoruz. Not : AutomationId ve Class, bir denetim bulurken yaygın olarak kullanılan özelliklerdir.
4) Hedef kontrol bulunduktan sonra, kontrol üzerindeki eylemi çağırmak için başka bir komut kullanırız. Bu örnekte, bir metin kutusu için metni ayarlamak Set-UIATextBoxText'tir.
Bu, UI Otomasyonunun UI otomasyonunu gerçekleştirmesinin ana yoludur.
varsayılan ağ geçidim neden çevrimdışı olmaya devam ediyor
Farklı kontrol türleri için komutları ve eylemleri başlatma komutunu resmi sitesinin yardım belgelerinde bulabilirsiniz: UI Otomasyonu PowerShell Uzantıları
Adımların geri kalanı damarda benzerdir. Öyleyse şimdi diğer önemli konulara geçelim.
Üst-alt ilişkisini ve denetimin özelliklerini bulun
Bu tür ardışık düzenleri yazmak basittir, ancak önemli olan özelliklerin ve hedef denetimi içeren alt denetimlerin nasıl bulunacağıdır. Deneyimlerime göre, denediğim ikisi şunlar:
# 1) Pakette UIAutomationSpy kullanın:
İndirdiğimiz pakette masaüstündeki kontrolleri yakalayabilen bir araç var. UI masaüstünde hazır olduğunda, UIAutomat'ı açın ionSpy.exe :
- Yakalamayı başlatmak için 'Başlat' ı tıklayın.
- İmleci ne yakalayacağınız kontrolün üzerine getirin.
- Kontrolün vurgulanmış olduğunu ve pencere arayüzünde görüntülenen komut dosyasını bulduğunuzda, yakalamanın başarılı olduğu anlamına gelir.
- Yakalamayı durdurmak için 'Durdur' u tıklayın.
- Soldaki 'Hiyerarşi' sekmesini tıkladığınızda, denetleyicilerin üst-alt ilişkisini yukarıdan hedefe göreceksiniz
- Sağdaki 'Komut Dosyası' sekmesine tıklayın, kontrol için tam bir ardışık düzen görebilirsiniz:
Hedef kontrolü aramak için her kontrolü ve her özelliği dahil etmemize gerek olmadığını lütfen unutmayın. Aslında, kullandığımız şey oldukça basit (yukarıdaki örneğe bakın):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Ne yazık ki, kaç tane kontrolün dahil edilmesi gerektiği konusunda resmi bir sihirli değnek yoktur. Denemek ve tecrübe gerektirir.
UIAutomationSpy hakkında harika olmayan şey:
Windows 10 için en iyi video dönüştürücü yazılımı
- Kullanıcı dostu bir arayüze sahip değil
- Bir kontrolü birbiri ardına yakalamanız ve istediğiniz ayrıntıları almanız gerekecek.
# 2) Windows masaüstünün kontrollerini incelemek için harici araçlar kullanın
Önerilen bir araç, Microsoft tarafından sağlanan inspect.exe'dir. Aracı açtığınızda, penceredeki denetimlerin her ayrıntısını görürsünüz:
İnspect.exe hakkında harika olmayan ne
- Ayrıntıları dışa aktarmanın bir yolu yoktur.
- UI Otomasyon modülü, tüm alt kontrolleri almak için Get-UIAControlChildren gibi bazı komutlar sağlar. inspect.exe, pencerenin altındaki tüm denetimleri çaprazlayabilir, ancak performans karmaşık pencereler için değerlendirilmez.
Gelişmiş uygulama: senaryo yazma yaklaşımını basitleştirin
Yukarıdaki girişten, bazen ardışık düzenler çok uzun olmasa da, modülü kullanarak komut dosyasını yazmanın ana yolunun ardışık düzenler olduğunu görebilirsiniz. Daha basit ve daha kolay hale getirmek için bir yaklaşım vardır ve ana fikir, kontrollerin verilerini bir XML dosyasına çıkarmak ve gerektiğinde XML dosyasından boru hatlarını birleştirmektir.
Yukarıdaki örnekle devam edelim:
İlk olarak, kontrollerin özelliklerini ve ebeveyn-çocuk ilişkisini içeren bir XML dosyası oluşturun. Gerekli her kontrol için düğümler ekliyoruz: Düğüm adı benzersizdir, böylece denetimi adıyla hemen bulabiliriz ve komut ve özellikleri düğümlerin özellikleri olarak ayarlanır.
İşte test ettiğimiz Test Formunun XML dosyası:
Xml dosyasını arayarak ve çalıştırarak ardışık düzenlere katılmak için bazı işlevler tanımlanmalıdır:
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 }
Şimdiye kadar, kontroller değişmedikçe bunlar neredeyse tek seferlik görevler.
Şimdi aşağıdaki komut dosyalarındaki adımları otomatikleştirebiliriz:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
Bu şekilde, komut dosyalarındaki bir dizi boru hattından kurtulabiliriz ve yeterlilik büyük ölçüde artacaktır.
Önerilen okuma => Sikuli GUI Otomasyon Aracına Giriş
Sonuç:
Microsoft UIAutomation, PowerShell ile Windows masaüstünde UI otomasyon testleri yaptırmak isteyenler için harika bir kitaplıktır.
Yukarıdaki giriş, aracın yalnızca bir bölümüdür. Basitleştirilmiş yaklaşımı, otomasyon testleri yazma konusundaki yeterliliğimizi geliştirmek için iyi bir yol olan test komut dosyalarından veri çıkarma fikrinden esinlenmiştir. Daha fazlasını keşfedin İşte .
Lütfen yorumlarınızı aşağıda paylaşın ve UIAutomation kullanıcılarının deneyimlerini duymak isteriz.
Önerilen Kaynaklar
- Yeni Başlayanlar İçin Derinlemesine Tutulma Öğreticileri
- SeeTest Otomasyon Eğitimi: Mobil Test Otomasyon Aracı Kılavuzu
- DevOps Otomasyonu: Otomasyon DevOps Uygulamasında Nasıl Uygulanır?
- Geb Eğitimi - Geb Aracını Kullanarak Tarayıcı Otomasyon Testi
- Otomasyon Testi Nedir (Test Otomasyonunu Başlatmak için Nihai Kılavuz)
- Selendroid Eğitimi: Android Mobil Test Otomasyon Çerçevesi (Bölüm 1)
- Katalon Studio Eğitimi: Beklediğiniz Ücretsiz Bir Test Otomasyon Aracı
- Eclipse için Appium Studio: Eclipse'den Uçtan Uca Appium / Selenium Otomasyonu