powershell uiautomation tutorial
PowerShell UIAutomation 자습서 : 데스크톱 응용 프로그램의 UI 자동화
UIAutomation은 GUI 자동화 테스트를위한 오픈 소스 프로젝트 PowerShell 확장입니다. Win32, Windows Form, WPF 등을 지원합니다.
이 자습서에서는 PowerShell이 모듈을 사용하여 UI 자동화를 구현하는 방법에 중점을 둡니다. 이를 설명하기 위해 Windows Form 애플리케이션을 예로 사용합니다.
학습 내용 :
- Microsoft UIAutomation 시작하기
- UIAutomation 가져 오기
- 예제가있는 UI 자동화
- 부모-자식 관계 및 컨트롤의 속성 찾기
- 고급 구현 : 스크립트 작성 방식 단순화
- 결론:
- 추천 도서
Microsoft UIAutomation 시작하기
프로젝트는 PowerShell 스크립트에 대한 유일한 라이브러리를 제공하므로 설치가 필요하지 않으며 모듈을 다운로드하여 스크립트로 가져올 수 있습니다.
또한 읽기 => 완벽한 세부 정보를 제공하는 35 개 이상의 최고의 GUI 테스트 도구
PowerShell에 대해 자세히 알고 시작하는 방법을 이해하려면 다음을 확인하세요.
UIAutomation 가져 오기
1) 공식 웹 사이트에서 최신 패키지를 다운로드하고 압축을 풉니 다. UI 자동화 PowerShell 확장 la ocal 경로로,예를 들면, C : UIAutomation
2) 모듈을 PowerShell 스크립트로 가져옵니다. ( 노트 :이 명령을 실행할 때 PowerShell을 관리자로 실행하고 있지 않은지 확인하십시오.)
Import-Module C:UIAutomationUIAutomation.dll
이제 모듈에 정의 된 명령을 사용하여 UI 자동화 테스트를 시작할 수 있습니다.
예제가있는 UI 자동화
GUI 자동화 테스트에서 볼 수있는 몇 가지 일반적인 컨트롤을 다루는 간단한 Windows 양식 응용 프로그램부터 시작하겠습니다.
이 예에서는 몇 가지 기본 개인 정보가 포함 된 양식을 제출하는 단계를 자동화하라는 메시지가 표시됩니다.
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) 스크립트는 먼저 맨 위 창을 찾은 다음 파이프 라인을 통해 자식 컨트롤을 찾습니다. 대상 컨트롤 (이름이 '이름'인 편집 상자 (또는 텍스트 상자))을 찾을 때까지이 작업을 수행합니다.
2) 컨트롤을 찾을 때 사용할 명령을 알 수 있도록 컨트롤의 유형을 주장합니다. Get-UIAWindow – 창이고 Get-UIAEdit – 편집 / 텍스트 상자입니다.
삼) 또한 하나 이상의 컨트롤 속성이 필요합니다. 이 예에서는 컨트롤을 식별하는 속성으로 Name 만 사용합니다. 노트 : AutomationId 및 Class는 컨트롤을 찾을 때 일반적으로 사용되는 속성이기도합니다.
4) 대상 컨트롤을 찾은 후 다른 명령을 사용하여 컨트롤에 대한 작업을 호출합니다. 이 예제에서 텍스트 상자의 텍스트를 설정하는 것은 Set-UIATextBoxText입니다.
이것이 UI 자동화가 UI 자동화를 실현하는 주요 방법입니다.
자바에서 이진 검색 트리 만들기
공식 사이트의 도움말 문서에서 다양한 유형의 컨트롤에 대한 명령과 작업을 호출하는 명령을 찾을 수 있습니다. UI 자동화 PowerShell 확장
나머지 단계는 유사합니다. 이제 다른 중요한 주제로 넘어가겠습니다.
부모-자식 관계 및 컨트롤의 속성 찾기
이러한 파이프 라인을 작성하는 것은 간단하지만 중요한 부분은 대상 컨트롤이 포함 된 속성 및 자식 컨트롤을 찾는 방법입니다. 내 경험상 다음은 내가 시도한 두 가지입니다.
# 1) 패키지에서 UIAutomationSpy 사용 :
다운로드 한 패키지에는 데스크톱에서 컨트롤을 캡처 할 수있는 도구가 있습니다. 데스크톱에서 UI가 준비되면 UIAutomat를 엽니 다. ionSpy.exe :
- 캡처를 시작하려면 '시작'을 클릭합니다.
- 캡처 할 컨트롤에 커서를 이동합니다.
- 컨트롤이 강조 표시되고 해당 창 인터페이스에 스크립트가 표시되면 캡처가 성공한 것입니다.
- 캡처를 중지하려면 '중지'를 클릭합니다.
- 왼쪽에있는 'Hierarchy'탭을 클릭하면 컨트롤러의 상위-하위 관계가 위에서부터 대상까지 표시됩니다.
- 오른쪽의 '스크립트'탭을 클릭하면 제어에 대한 전체 파이프 라인을 볼 수 있습니다.
대상 컨트롤을 검색하기 위해 파이프 라인의 모든 컨트롤과 모든 속성을 포함 할 필요는 없습니다. 실제로 우리가 사용하는 것은 매우 간단합니다 (위의 예 참조).
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
불행히도 얼마나 많은 컨트롤이 포함되어야하는지에 대한 공식적인 은색 총알이 없습니다. 노력과 경험이 필요합니다.
UIAutomationSpy의 장점 :
- 친숙한 인터페이스가 없습니다.
- 컨트롤을 하나씩 캡처하고 원하는 세부 정보를 얻어야합니다.
# 2) 외부 도구를 사용하여 Windows 데스크톱의 컨트롤 검사
권장 도구는 Microsoft에서 제공하는 inspect.exe입니다. 도구를 열면 창에있는 컨트롤의 모든 세부 정보를 볼 수 있습니다.
inspect.exe의 단점
- 세부 정보를 내보낼 수있는 방법이 없습니다.
- UI 자동화 모듈은 Get-UIAControlChildren과 같은 일부 명령을 제공하여 모든 자식 컨트롤을 가져옵니다. inspect.exe는 창 아래의 모든 컨트롤을 가로 챌 수 있지만 복잡한 창에 대한 성능은 평가되지 않습니다.
고급 구현 : 스크립트 작성 방식 단순화
위의 소개에서 파이프 라인이 모듈을 사용하여 스크립트를 작성하는 주요 방법이라는 것을 알 수 있지만 파이프 라인이 그렇게 길지 않은 경우도 있습니다. 더 간단하고 쉽게 만들 수있는 접근 방식이 있으며 주요 아이디어는 컨트롤의 데이터를 XML 파일로 추출하고 필요할 때 XML 파일에서 파이프 라인을 결합하는 것입니다.
위의 예를 계속해 보겠습니다.
배열 및 함수 C ++
먼저 컨트롤의 속성과 부모-자식 관계를 포함하는 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 자동화 도구 소개
결론:
Microsoft UIAutomation은 PowerShell을 사용하여 Windows 데스크톱에서 UI 자동화 테스트를 원하는 사용자를위한 훌륭한 라이브러리입니다.
위의 소개는 도구의 일부일뿐입니다. 단순화 된 접근 방식은 테스트 스크립트에서 데이터를 추출한다는 아이디어에서 영감을 얻었으며 이는 자동화 테스트 작성의 숙련도를 향상시키는 좋은 방법입니다. 그것에 대해 더 알아보기 여기 .
아래에 의견을 공유해 주시면 UIAutomation 사용자의 경험을 듣고 싶습니다.
추천 도서
- 초보자를위한 심층 이클립스 튜토리얼
- SeeTest 자동화 자습서 : 모바일 테스트 자동화 도구 가이드
- DevOps 자동화 : DevOps Practice에 자동화가 적용되는 방법
- Geb 자습서-Geb 도구를 사용한 브라우저 자동화 테스트
- 자동화 테스트 란 무엇입니까 (테스트 자동화 시작을위한 궁극적 인 가이드)
- Selendroid 자습서 : Android 모바일 테스트 자동화 프레임 워크 (1 부)
- Katalon Studio 튜토리얼 : 기다려온 무료 테스트 자동화 도구
- Eclipse 용 Appium Studio : Eclipse에서 엔드-투-엔드 Appium / Selenium 자동화