appium 자동화 2024 - 4) Pytest+appium 자동화 구현
1. Appium 실행
맥 터미널 >
appium
앱피움 실행 확인
2. Appium Inspector
ㄴ 우선 가장 기본적인 세팅값 설정 후, 하단 Start Session 클릭
ㄴ 미러링이 되며, 각 Element 를 선택할수 있게된다.
ㄴ 시계를 실행시키기 위해, 시계 아이콘을 선택하면 위와같이 Element 정보가 노출된다.
ㄴ 위에서 xpath 값을 복사해둔다.
//android.widget.TextView[@content-desc="시계"]
|
3. Python 소스코드
앞서 설치 했던 Pytest 테스트 포맷으로 통해 소스코드를 작성한다.
구조화 되기 전 단일 코드로 작성하는 단계
import pytest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from selenium.common import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from appium.webdriver import WebElement
from selenium.webdriver.support.wait import WebDriverWait
#1 기다렸다가 클릭하는 함수 wait_Element / wait_Elements
def wait_Element(driver, xpath):
location = xpath
try:
element:WebElement = WebDriverWait(driver, 5).until(
EC.presence_of_element_located((By.XPATH, xpath))
)
return element
except TimeoutException:
print("Timeout!!!!!!!!!!!!")
return False
def wait_Elements(driver, xpath):
location = xpath
wait_Element(driver, location)
return driver.find_elements(By.XPATH, location)
#2 appium 세팅
@pytest.fixture(scope="module")
def driver():
capabilities = dict(
platformName='Android',
automationName='uiautomator2'
)
appium_server_url = 'http://localhost:4723'
driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(capabilities))
driver.press_keycode(3)
yield driver
driver.quit()
#3 테스트케이스
def test_case_01(driver):
el = wait_Element(driver, '//android.widget.TextView[@content-desc="시계"]')
# el = driver.find_element(by=AppiumBy.XPATH, value='//android.widget.TextView[@content-desc="시계"]')
el.click()
#1 wait_Element(s) 함수는 찾는 Element 가 나올때까지 5초 기다려주는 함수이다.
#2 fixture 라벨이 붙은 driver()는 appium 세팅을 하는 부분으로, 이후에 모든 TC에서 사용할수 있다.
홈화면에 있는 시계 아이콘을 선택할것이기때문에,
설정 단계에서 driver.press_keycode(3)를 활용해 메인 홈화면으로 이동한다.
(자동화 전 메인 홈화면에 시계 아이콘을 옮겨두어야 한다.)
#3 pytest는 "test_" 로 시작하는 테스트 케이스를 알아서 찾아준다.
fixture 로 선언된 driver를 받아 자유롭게 사용할수 있다.
앞서 복사해두었던, 시계 아이콘 Xpath 를 넣음으로써, 시계 Element를 el 변수에 넣고, .click() 함수를 사용해 선택
이후 pytest 테스트파일.py 명령어로 실행하면
시계 앱 열기 자동화 성공!
https://salzzak.tistory.com/104