여는 말

안녕하세요. Dogu Technologies의 Henry에요. :)

지난 게시글에서는 Appium 서버를 실행했어요. Appium 클라이언트를 사용하기 위해서는 Appium 서버가 꼭 필요해요.
아직 Appium 서버를 설정하지 않으신 분들께서는 아래 링크를 클릭해 보실 수 있어요.
https://blog.dogutech.io/app-test-automation-tutorial-3/

Python을 사용해 Appium 클라이언트를 구성하고 실행할게요.

💡
아래 가이드는 Windows 10 운영체제를 바탕으로 작성되었어요.

Appium 클라이언트 설치하기

powershell 열기
pip 확인하기
  • pip install Appium-Python-Client (띄어쓰기 있음)을 입력하고 엔터를 입력해주세요.
    최초로 설치하는 것이라면, 아래 그림처럼 Successfully built Appium-Python-Client이 보일거에요.
Appium-Python-Client 설치하기
  • 또는 이전에 설치한 적이 있다면, 위 그림과 다르게 아래 그림처럼 Requirement already satisfied: Appium-Python-Client가 보일거에요.
기존 Appium-Python-Client 설치 확인하기

Appium 클라이언트 스크립트 만들기

Visual Studio Code 열기
my-python 폴더 열기
  • New File...을 클릭하고, 애피움.py 파일을 만들어주세요.
New File... 클릭하기
애피움.py 만들기
  • 아래 스크립트를 애피움.py복사 붙여넣기저장해주세요.
from appium import webdriver
from appium.options.android import UiAutomator2Options
from time import sleep

애피움_서버_주소 = 'http://localhost:4723'

유튜브_앱_패키지 = 'com.google.android.youtube'
유튜브_앱_액티비티 = 'com.google.android.apps.youtube.app.WatchWhileActivity'

캐퍼빌리티 = {
    'platformName': 'Android',
    'automationName': 'uiautomator2',
    'deviceName': 'Android',
    'appPackage': 유튜브_앱_패키지,
    'appActivity': 유튜브_앱_액티비티,
}

옵션 = UiAutomator2Options().load_capabilities(캐퍼빌리티)

드라이버 = webdriver.Remote(애피움_서버_주소, options=옵션)
sleep(5)
드라이버.quit()

Appium 스크립트

Android 에뮬레이터가 켜져 있는지 확인하기
Appium 서버가 켜져 있는지 확인하기
  • PowerShell을 열고 아래 명령어를 입력하고 엔터를 입력해주세요.
Get-Command python

Python 설치 경로 확인 명령어

python 설치 경로 확인하기
Visual Studio Code Python 버전 확인하기
  • Python 목록 중에서 아까 PowerShell에 나온 경로를 클릭해주세요.
    경로 앞 물결 문자(~)는 현재 사용자 경로(C:\Users\<현재 사용자>)의 줄임말이에요.
    저의 경우에는 ~\AppData\Local\Programs\Python\Python311\python.exe에요.
Visual Studio Code Python 버전 선택하기
  • 메뉴에서 Run -> Run Without Debugging을 클릭해주세요.
    1~5분 기다리면, YouTube가 켜졌다가 5초 후 꺼질거에요.
Appium 스크립트 실행하기

닫는 말

여러 기반 프로그램을 설치하고, Python을 사용해 Appium 클라이언트를 설치하고 실행하고, Appium 서버를 거쳐 Android 에뮬레이터를 제어했어요.

하지만 앱을 실행했을 뿐, 앱의 버튼을 클릭하거나 입력 창에 텍스트를 입력하지 않았어요.
앱의 "이" 버튼을 클릭, "저" 버튼을 클릭하기 위해서는 "이", "저"가 무엇인지 명확히 전달해줘야 해요.

단순한 방법으로는 "화면의 위치"를 전달하면 돼요.
이 방법은 치명적인 단점이 하나 있어요.
단말기 기종마다 화면의 크기가 모두 다르기 때문이에요.
이 방법을 사용하면, 제각각의 "기종별 화면의 위치"를 지정해 전달해줘야 해요.

이런 이유로, 주로 다른 방법을 사용하는데요.
저희도 이 방법을 여러번 사용했어요.
컴퓨터에게 화면에 보이는 창의 크기나 위치에 관계 없이 무언가를 명확하게 전달할 때요.
환경 변수의 값을 입력하거나 Visual Studio Code의 Python을 선택하는 것이 그런 것이에요.
바로 경로 선택이에요.

폴더나 파일의 경로를 프로그램에 입력하면, 파일이나 폴더를 찾아 실행하거나 열어 주는 것과 같이,
버튼이나 입력창의 경로를 Appium에 입력하면, 버튼이나 입력창을 찾아 클릭하거나 텍스트를 입력할 수 있어요.

하지만 우리에게 앱의 버튼은 보이지만, 경로는 보이지 않아요.
그래서 이 앱 내 버튼의 경로를 보여주는 Appium 인스펙터라는 도구를 사용할거에요.

그리고 우리가 서울에서 부산을 갈 때, KTX, 고속도로, 비행기 중 더 효과적인 경로를 선택하는데요.
앱 내 버튼의 경로를 여러 방식으로 나타내고 찾을 수 있는데요.
이를 Locator라고 해요. 다음 게시글에서 확인하실 수 있을 거예요.
다음 게시글에서 봬요!

링크

Android 에뮬레이터 - https://developer.android.com/studio/run/emulator?hl=ko
Appium - https://appium.io/docs/en
Appium 서버 - https://appium.io/docs/en/2.3/quickstart/install/
Appium 클라이언트 - https://appium.io/docs/en/2.3/quickstart/test-py/
Appium 인스펙터 - https://github.com/appium/appium-inspector
Appium Locator 검색 - https://www.google.com/search?q=appium+locator&sca_esv=592185140&ei=4ZKBZe6zDfmA1e8Pt-mHkAw&ved=0ahUKEwiuqNSbxpuDAxV5QPUHHbf0AcIQ4dUDCBA&uact=5&oq=appium+locator&gs_lp=Egxnd3Mtd2l6LXNlcnAiDmFwcGl1bSBsb2NhdG9yMgsQABiABBiKBRiRAjIFEAAYgAQyBRAAGIAEMgUQABiABEj_IVCdBFjWH3AEeACQAQGYAcwBoAHXEaoBBjAuMTUuMbgBA8gBAPgBAagCBsICChAAGEcY1gQYsAPCAgQQABgDwgILEAAYgAQYsQMYgwHCAgsQLhiABBixAxiDAcICCBAAGIAEGLEDwgIIEC4YgAQYsQPCAhQQABiABBjjBBjpBBjqAhi0AtgBAcICCxAuGIAEGMcBGNEDwgIQEC4YgAQYigUYQxjHARjRA8ICChAAGIAEGIoFGEPCAg4QLhiABBjHARjRAxjUAsICExAuGIAEGIoFGEMYyQMYxwEY0QPCAgsQABiABBiKBRiSA8ICBxAAGIAEGArCAgsQABiABBiKBRiGA-IDBBgAIEGIBgGQBgi6BgQIARgH&sclient=gws-wiz-serp
Python - https://docs.python.org/ko/3/tutorial/index.html
PowerShell - https://learn.microsoft.com/en-us/powershell/
PowerShell 7 - https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.4
pip - https://pip.pypa.io/en/stable/
Visual Studio Code - https://code.visualstudio.com/