powershell uiautomation tutorial
Урок за PowerShell UIAutomation: Автоматизация на потребителския интерфейс на настолни приложения
UIAutomation е разширение за проект PowerShell с отворен код за тестове за автоматизация на GUI. Той поддържа Win32, Windows Form, WPF и т.н.
В този урок ще се съсредоточим върху това как PowerShell използва модула за внедряване на автоматизация на потребителския интерфейс. За да обясним това, ще използваме като пример приложението Windows Form.
Какво ще научите:
- Първи стъпки с Microsoft UIAutomation
- Внос UIAutomation
- UI Automation с примери
- Намерете връзката родител-дете и свойствата на контролата
- Разширено внедряване: опростете подхода за писане на скрипта
- Заключение:
- Препоръчително четене
Първи стъпки с Microsoft UIAutomation
Тъй като проектът предоставя единствената библиотека за скриптове PowerShell, той не изисква инсталация, ние можем просто да изтеглим модула и да го импортираме в скрипта.
Прочетете също => 35+ Най-добри инструменти за тестване на GUI с пълни подробности
За да научите повече за PowerShell и да разберете как да започнете с него, разгледайте:
- Разширения на PowerShell за автоматизация на потребителския интерфейс
- Преглед на автоматизацията на потребителския интерфейс
- Windows PowerShell
- Cool Stuff за PowerShell 5.0 в Windows 10
Внос UIAutomation
1) Изтеглете и разархивирайте най-новия пакет от официалния му уебсайт: Разширения на PowerShell за автоматизация на потребителския интерфейс към лакален път,например, C: UIAавтоматизация
две) Импортирайте модула в скрипта PowerShell: ( Забележка : Когато стартирате тази команда, уверете се, че не използвате PowerShell като администратор)
Import-Module C:UIAutomationUIAutomation.dll
Сега можем да използваме командите, дефинирани в модула, за да стартираме тестване за автоматизация на потребителския интерфейс.
UI Automation с примери
Нека започнем с просто приложение за Windows формуляр, което обхваща някои типични контроли, които можем да видим при тестване на автоматизация на GUI.
В този пример ни е казано да автоматизираме стъпките за подаване на формуляр с някои основни лични данни:
Етап 1) Въведете името „Anna Smith“
Стъпка 2) Изберете пола „Жена“
Стъпка # 3) Изберете „Да“ като отговор на това, ако сте завършили.
Стъпка # 4) Щракнете върху „Изпращане“
Скриптът за това е следният:
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'|
Вероятно можете да разберете от горния скрипт как той манипулира контролите в приложението. Нека разберем по-нататък.
Вземете първата стъпка като пример:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Ето разбивка на случващото се в този ред:
1) Първо скриптът намира най-горния прозорец и след това намира своето дъщерно управление през тръбопровода. Прави това, докато намери целевия контрол - полето за редактиране (или текстовото поле) с името „Име“.
две) При намиране на контролата той претендира за типа на контролата, така че да знаете каква команда да използвате, напр. Get-UIAWindow - е прозорец, а Get-UIAEdit - е поле за редактиране / текст.
3) Той също така изисква едно или повече свойства на контролата. В този пример използваме само Name като свойство, за да идентифицираме контролата. Забележка : AutomationId и Class също са свойства, които често се използват при намиране на контрола.
4) След като целевата контрола бъде намерена, използваме друга команда, за да извикаме действието върху контролата. В този пример е Set-UIATextBoxText, за да зададете текста за текстово поле.
Това е основният начин за UI Automation да реализира UI автоматизация.
какво може да отвори json файл
Можете да намерите командите за различни видове контроли и командата за извикване на действия в помощните документи на официалния му сайт: Разширения на PowerShell за автоматизация на потребителския интерфейс
Останалите стъпки са подобни във вената. И така, нека преминем към други важни теми.
Намерете връзката родител-дете и свойствата на контролата
Лесно е да се напишат такива конвейери, но съществената част е как да се намерят свойствата и дъщерните контроли, съдържащи целевата контрола. Според моя опит това са двете, които опитах:
# 1) Използвайте UIAutomationSpy в пакета:
В пакета, който изтеглихме, има инструмент, който може да улови контролите на работния плот. Когато потребителският интерфейс е готов на работния плот, отворете UIAutomat ionSpy.exe :
- Щракнете върху „Старт“, за да започнете улавянето.
- Преместете курсора до контрола, който да заснемете.
- Когато намерите контролата подчертана и скрипта показан на интерфейса на прозореца, това означава, че улавянето е успешно.
- Щракнете върху „Stop“, за да спрете заснемането.
- Щракнете върху раздела „Йерархия“ вляво и ще видите връзката родител-дете на контролерите отгоре до целта
- Щракнете върху раздела „Сценарий“ отдясно, можете да видите пълен конвейер за контролата:
Моля, обърнете внимание, че не е необходимо да включваме всяка контрола и всяко свойство от тръбопровода, за да търсим целевата контрола. Всъщност това, което използваме, е съвсем просто (вижте примера по-горе):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
За съжаление не съществува официален сребърен куршум за това колко контроли трябва да бъдат включени. Изисква опит и опит.
Какво не е толкова страхотно за UIAutomationSpy:
- Той няма приятелски интерфейс
- Ще трябва да заснемете един контрол след друг и да получите подробностите, които искате.
# 2) Използвайте външни инструменти, за да проверите контролите за работния плот на Windows
Предложен инструмент е inspect.exe, предоставен от Microsoft. Когато отворите инструмента, ще получите всеки детайл от контролите на прозореца:
Какво не е толкова страхотно за inspect.exe
- Няма начин да експортирате подробностите.
- Модулът за автоматизация на потребителския интерфейс предоставя някои команди като Get-UIAControlChildren, за да получи всички детски контроли. inspect.exe може да пресича всички контроли под прозореца, но производителността не се оценява за сложни прозорци.
Разширено внедряване: опростете подхода към писането на скрипта
От горното въведение може да видите, че конвейерите са основният начин за писане на скрипта с помощта на модула, въпреки че понякога конвейерите не са толкова дълги. Има подход, който да го направи по-опростен и лесен и основната идея е да се извлекат данните от контролите в XML файл и да се присъединят към конвейерите, когато е необходимо, от XML файла.
Нека продължим с горния пример:
Първо, генерирайте XML файл, включващ свойствата и връзката родител-дете на контролите. Добавяме възли за всяка необходима контрола: името на възела е уникално, за да можем да намерим контролата веднага по име, а командата и нейните свойства са зададени като свойства на възлите.
Ето XML файла за тестовия формуляр, който тестваме:
как да тествате клиентско сървърно приложение
Някои функции трябва да бъдат дефинирани, за да се присъединят към конвейерите, като търсят xml файла и ги изпълняват:
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 }
Засега това са почти еднократни задачи, освен ако самите контроли не се променят.
Сега можем да автоматизираме стъпките в следните скриптове:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
По този начин можем да се отървем от куп тръбопроводи в скриптовете и уменията ще бъдат значително подобрени.
Препоръчително четене => Въведение в Sikuli GUI Automation Tool
Заключение:
Microsoft UIAutomation е чудесна библиотека за тези, които искат да направят тестове за автоматизация на потребителския интерфейс на работния плот на Windows с PowerShell.
Горното въведение е само сегмент от инструмента. Опростеният му подход е вдъхновен от идеята за извличане на данни от скриптове за тестване, което е добър начин да подобрим уменията си за писане на тестове за автоматизация. Разгледайте повече за него тук .
Моля, споделете вашите коментари по-долу и ще се радваме да чуем опит от потребители на UIAutomation.
Препоръчително четене
- Уроци за задълбочено затъмнение за начинаещи
- SeeTest Automation Tutorial: Ръководство за инструмент за автоматизация на мобилни тестове
- DevOps Automation: Как се прилага автоматизацията в практиката на DevOps
- Урок за Geb - Тестване за автоматизация на браузъра с помощта на Geb Tool
- Какво е тестване за автоматизация (Ultimate Guide to Start Test Automation)
- Ръководство за Selendroid: Рамка за автоматизация на мобилни тестове за Android (част 1)
- Урок на Katalon Studio: Безплатен инструмент за автоматизация на тестове, който сте чакали
- Appium Studio за Eclipse: Автоматизация на Appium / селен от край до край от Eclipse