소개
AppiumLibrary는 Robot Framework 기반의 모바일 애플리케이션 테스트 자동화를 위한 라이브러리입니다. iOS와 Android 플랫폼 모두에서 다양한 테스트 시나리오를 구현할 수 있습니다.
요소 식별 방법
모든 키워드는 요소를 식별하기 위해 locator 또는 webelement 매개변수가 필요합니다. locator는 요소 탐색 전략을 정의하는 문자열이며, webelement는 WebElement 객체입니다.
로케이터 활용
기본적으로 로케이터는 요소 유형의 키 속성과 매칭됩니다. iOS/Android에서 id는 모든 요소의 기본 키 속성입니다:
<span class="k">Click Element</span><span class="p"> </span><span class="n">id</span><span class="o">=</span><span class="n">login_btn</span>
지원하는 탐색 전략:
| 전략 | 예시 | 설명 |
|---|---|---|
| accessibility_id | accessibility_id=confirm_btn | content-desc 속성 기반 |
| android | android=UiSelector().text('Submit') | Android UI Automator |
| ios | ios=.buttons().withName('OK') | iOS UI Automation |
| nsp | nsp=type=="XCUIElementTypeButton" | iOSNsPredicate |
웹 요소 활용
Get WebElements로 획득한 WebElement 객체를 직접 사용 가능:
<span class="k">@{elements}</span><span class="p"> </span><span class="n">Get Webelements</span><span class="p"> </span><span class="n">class</span><span class="o">=</span><span class="n">XCUIElementTypeButton</span>
<span class="k">Click Element</span><span class="p"> </span><span class="nv">@{elements}[1]</span>
초기 구성
임포트 시 옵션 설정 가능:
<span class="k">Library</span><span class="p"> </span><span class="nn">AppiumLibrary</span><span class="p"> </span><span class="n">timeout</span><span class="o">=</span><span class="mi">15</span><span class="p"> </span><span class="n">run_on_failure</span><span class="o">=</span><span class="n">No Operation</span>
timeout: 대기 작업 기본 제한 시간(초)run_on_failure: 키워드 실패 시 실행할 동작
핵심 키워드
| 키워드 | 매개변수 | 기능 |
|---|---|---|
| Start Application | remote_url, alias, **kwargs | 새 애플리케이션 세션 시작 |
| Input Text | locator, text | 텍스트 입력 필드에 값 입력 |
| Tap Element | locator, x_offset, y_offset | 요소 탭 동작 실행 |
| Verify Element Visible | locator | 요소 가시성 검증 |
| Capture Screen | filename | 화면 캡처 저장 |
| Set Network Mode | connectionStatus | 네트워크 상태 설정(Android) |
| Record Screen | timeLimit, **options | 화면 녹화 시작 |
| Terminate Application | 애플리케이션 세션 종료 |
고급 기능 예시
화면 녹화 관리:
<span class="k">Start Screen Recording</span><span class="p"> </span><span class="n">timeLimit</span><span class="o">=</span><span class="mi">120</span> <span class="c"># 테스트 실행 구간</span> <span class="k">Stop Screen Recording</span><span class="p"> </span><span class="n">filename</span><span class="o">=</span><span class="s">test_recording.mp4</span>
컨텍스트 전환:
<span class="k">Switch To Context</span><span class="p"> </span><span class="s">WEBVIEW_com.example.app</span>
요소 대기 조건:
<span class="k">Wait Until Element Is Visible</span><span class="p"> </span><span class="n">locator</span><span class="o">=</span><span class="n">id</span><span class="o">=</span><span class="n">welcome_msg</span><span class="p"> </span><span class="n">timeout</span><span class="o">=</span><span class="mi">10</span>