powershell uiautomation tutorial
Підручник з PowerShell UIAutomation: Автоматизація інтерфейсу користувача для настільних додатків
UIAutomation - це розширення проекту PowerShell з відкритим кодом для тестів автоматизації графічного інтерфейсу. Він підтримує Win32, Windows Form, WPF тощо.
У цьому посібнику ми зупинимось на тому, як PowerShell використовує модуль для реалізації автоматизації інтерфейсу користувача. Щоб пояснити це, ми використаємо приклад Windows Form.
Що ви дізнаєтесь:
- Початок роботи з Microsoft UIAutomation
- Імпорт UIAutomation
- Автоматизація інтерфейсу користувача з прикладами
- Знайдіть взаємозв'язок батьків і дітей та властивості елемента керування
- Розширена реалізація: спрощення підходу до написання сценарію
- Висновок:
- Рекомендована література
Початок роботи з Microsoft UIAutomation
Оскільки проект надає єдину бібліотеку для сценаріїв PowerShell, він не вимагає інсталяції, ми можемо просто завантажити модуль та імпортувати його до сценарію.
Також читайте => 35+ найкращих засобів тестування графічного інтерфейсу з повними деталями
Щоб дізнатись більше про PowerShell і зрозуміти, як розпочати з нею, перегляньте:
- Розширення PowerShell для автоматизації інтерфейсу користувача
- Огляд автоматизації інтерфейсу користувача
- Windows PowerShell
- Класні речі про PowerShell 5.0 у Windows 10
Імпорт UIAutomation
1) Завантажте та розпакуйте останній пакет із офіційного веб-сайту: Розширення PowerShell для автоматизації інтерфейсу користувача до очного шляху,наприклад, C: UIAАвтоматизація
2) Імпортуйте модуль до сценарію PowerShell: ( Примітка : Під час запуску цієї команди переконайтеся, що не запускаєте PowerShell як адміністратор)
Import-Module C:UIAutomationUIAutomation.dll
Тепер ми можемо використовувати команди, визначені в модулі, для запуску тестування автоматизації інтерфейсу.
Автоматизація інтерфейсу користувача з прикладами
Почнемо з простої програми-форми для Windows, яка охоплює деякі типові елементи управління, які ми можемо побачити при тестуванні автоматизованого графічного інтерфейсу.
У цьому прикладі нам пропонують автоматизувати кроки для подання форми з деякими основними особистими даними:
Крок 1) Введіть ім’я “Анна Сміт”
Крок No2) Виберіть стать 'Жінка'
Крок No3) Виберіть 'Так' як відповідь, якщо закінчили.
Крок No4) Натисніть 'Надіслати'
Сценарій для цього такий:
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) Спочатку скрипт знаходить верхнє вікно, а потім знаходить його дочірній контроль через конвеєр. Він робить це, поки не знайде цільовий елемент керування - поле редагування (або текстове поле) з назвою “Ім'я”.
2) Знайшовши елемент керування, він претендує на тип елемента управління, щоб ви знали, яку команду використовувати, наприклад Get-UIAWindow - це вікно, а Get-UIAEdit - це поле редагування / тексту.
3) Він також вимагає одного або декількох властивостей елемента управління. У цьому прикладі ми використовуємо лише Name як властивість для ідентифікації елемента керування. Примітка : AutomationId та Class - це також властивості, які зазвичай використовуються при пошуку елемента керування.
4) Після того, як цільовий елемент управління знайдено, ми використовуємо іншу команду, щоб викликати дію на елементі управління. У цьому прикладі встановити текст для текстового поля - це Set-UIATextBoxText.
Це основний спосіб для UI Automation реалізувати автоматизацію UI.
Java 8 нових функцій з прикладами -
Ви можете знайти команди для різних типів елементів керування та команду для виклику дій у довідкових документах офіційного сайту: Розширення PowerShell для автоматизації інтерфейсу користувача
Решта кроків схожі по суті. Отже, перейдемо до інших важливих тем.
Знайдіть взаємозв'язок батьків і дітей та властивості елемента керування
Написати такі конвеєри просто, але значна частина полягає в тому, як знайти властивості та дочірні елементи керування, що містять цільовий елемент керування. На моєму досвіді це два, які я спробував:
# 1) Використовуйте UIAutomationSpy в пакеті:
різниця між переадресацією портів та активацією
У завантаженому пакетом є інструмент, який може захопити елементи керування на робочому столі. Коли інтерфейс буде готовий на робочому столі, відкрийте UIAutomat ionSpy.exe :
- Натисніть “Пуск”, щоб розпочати зйомку.
- Перемістіть курсор до елемента керування, який потрібно захопити.
- Коли ви виявите, що елемент керування виділено, а сценарій відображається на його інтерфейсі, це означає, що захоплення було успішним.
- Клацніть «Зупинити», щоб зупинити зйомку.
- Клацніть на вкладку 'Ієрархія' ліворуч, і ви побачите взаємозв'язок батьків і дітей контролерів зверху до цілі
- Клацніть на вкладці «Сценарій» праворуч, ви побачите повний конвеєр для елемента керування:
Зверніть увагу, що нам не потрібно включати всі елементи керування та всі властивості з конвеєру для пошуку цільового елемента управління. Насправді те, що ми використовуємо, досить просте (див. Приклад вище):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
На жаль, офіційної срібної кулі про те, скільки елементів керування слід включити, не існує. Це вимагає спроб і досвіду.
Що не так чудово в UIAutomationSpy:
- Він не має зручного інтерфейсу
- Вам доведеться захопити один елемент керування за іншим і отримати потрібні деталі.
# 2) Використовуйте зовнішні інструменти для перевірки елементів керування для робочого столу Windows
Запропонований інструмент - inspect.exe, наданий корпорацією Майкрософт. Відкривши інструмент, ви отримаєте всі деталі елементів управління у вікні:
Що не так здорово в 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.
Рекомендована література
- Поглиблені підручники Eclipse для початківців
- SeeTest Automation Tutorial: Мобільний інструмент автоматизації тестування
- DevOps Automation: як застосовується автоматизація на практиці DevOps
- Підручник Geb - Тестування автоматизації браузера за допомогою інструмента Geb
- Що таке тестування автоматизації (Кінцевий посібник із запуску автоматизації тестування)
- Підручник із Selendroid: Структура автоматизації тестування мобільних пристроїв Android (Частина 1)
- Підручник з Katalon Studio: Безкоштовний інструмент автоматизації тестів, на який ви чекали
- Appium Studio for Eclipse: наскрізна автоматизація Appium / Selenium From Eclipse