코딩/Mobile 자동화 (new)

appium 자동화 2024 - 4) Pytest+appium 자동화 구현

salzzak 2024. 2. 21. 20:23
728x90

 

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

 

쇼프로그램 보고싶다 친구야에 출연해봤다

 

salzzak.tistory.com