본문 바로가기
프로그래밍/안드로이드

Appium Inspector 사용법: 실무에서 바로 적용하는 예제와 활용 팁

by 완소루피 2024. 11. 12.
728x90
반응형

Appium Inspector는 모바일 애플리케이션 테스트를 효율적으로 수행할 수 있는 매우 강력한 도구입니다. 이를 통해 iOS와 Android 기기의 UI 요소를 탐색하고, XPath 또는 다른 위치 지정자를 얻어 자동화 스크립트를 구성하는 데 도움을 줄 수 있습니다. 이번 포스팅에서는 실무에서 자주 사용되는 Appium Inspector의 주요 기능과 샘플 코드를 소개해 드리겠습니다.

1. Appium Inspector 시작하기

Appium Inspector를 사용하기 위해서는 Appium 서버가 설치되어 있어야 합니다. 설치 후 Appium Inspector를 통해 애플리케이션의 UI를 탐색하고 테스트할 기기와 연결할 수 있습니다. 기기 연결 설정은 간단히 로컬 기기와 원격 기기를 모두 지원하며, IP 주소 또는 클라우드 기기 서비스와 연동하여 사용할 수 있습니다.

2. 요소 탐색 및 XPath 찾기

Appium Inspector를 실행한 후에는 애플리케이션의 화면을 탐색하면서 UI 요소의 속성을 확인할 수 있습니다. 요소의 위치를 지정할 때 id, name, class, XPath 등을 활용할 수 있는데, 이 중 XPath는 유연하게 요소를 찾아낼 수 있어 많이 사용됩니다.

  • XPath로 요소 찾기 예제:
     
# 특정 요소를 XPath로 찾기
search_button = driver.find_element(By.XPATH, "//android.widget.Button[@content-desc='Search']")
search_button.click()

 

3. 실무에서 자주 사용하는 자동화 예제

예제 1: 로그인 자동화 스크립트

많은 애플리케이션에서 로그인을 수행해야 하기 때문에, 이를 자동화하는 예제를 많이 사용합니다. 사용자 이름과 비밀번호를 입력한 후 로그인 버튼을 클릭하는 스크립트를 작성할 수 있습니다.

from appium import webdriver
from selenium.webdriver.common.by import By

# WebDriver 설정
desired_caps = {
    "platformName": "Android",
    "deviceName": "emulator-5554",
    "appPackage": "com.example.app",
    "appActivity": "com.example.app.MainActivity"
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)

# 로그인 프로세스 자동화
username_field = driver.find_element(By.ID, "com.example.app:id/username")
password_field = driver.find_element(By.ID, "com.example.app:id/password")
login_button = driver.find_element(By.ID, "com.example.app:id/login_button")

username_field.send_keys("testuser")
password_field.send_keys("password123")
login_button.click()

# 로그인 확인
assert driver.find_element(By.XPATH, "//android.widget.TextView[@text='Welcome']")
driver.quit()

 

예제 2: 특정 화면 내 요소 조작 예제

Appium Inspector를 통해 애플리케이션의 다양한 화면을 탐색하다 보면, 특정 화면에서 여러 요소를 조작해야 하는 경우가 많습니다. 아래는 특정 화면 내에서 여러 버튼을 클릭하고 텍스트를 확인하는 예제입니다.

# 화면에서 버튼과 텍스트 요소 탐색
menu_button = driver.find_element(By.XPATH, "//android.widget.ImageButton[@content-desc='Menu']")
menu_button.click()

settings_option = driver.find_element(By.XPATH, "//android.widget.TextView[@text='Settings']")
settings_option.click()

# 설정 화면에서 텍스트 확인
assert driver.find_element(By.XPATH, "//android.widget.TextView[@text='Settings']")

 

4. Appium Inspector 활용 팁

  • XPath 최적화: XPath를 사용할 때, 너무 복잡한 경로보다는 간결한 경로를 사용하면 성능이 향상됩니다.
  • 캡처와 로그 사용: 테스트가 실패할 경우를 대비해, Appium Inspector를 통해 스크린샷을 저장하고 로깅 기능을 활용하여 문제를 추적할 수 있습니다.
  • 조건부 대기: 모바일 애플리케이션은 네트워크 상태나 성능에 따라 응답 속도가 달라질 수 있으므로, WebDriverWait을 사용해 특정 요소가 나타날 때까지 대기하는 방법을 추천합니다.
728x90
반응형