Appium

[Appium] 뮤직 플레이어 제어

MASSO 2023. 9. 12. 20:42
728x90

Appium으로 뮤직 플레이어 앱(삼성 뮤직) 제어해보기

 테스트 절차기대 결과
1.1. 삼성 뮤직 실행
2. 동의 선택
3. 시작하기 선택
4. 권한 동의
5. [곡] 탭 선택
6. 셔플 버튼 선택
음악이 재생됨

 

from appium import webdriver

desired_cap = {
  "appium:deviceName": "DeviceID",
  "platformName": "Android",
  "appium:appPackage": "com.sec.android.app.music",
  "appium:appActivity": "com.sec.android.app.music.common.activity.MusicMainActivity"
}

def music():
    wd = webdriver.Remote("http://localhost:4723/wd/hub", desired_cap)
    wd.implicitly_wait(5)
    return wd

삼성 뮤직 실행 스크립트(따로 빼둠)
 

from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

from active import appiumtest1
from appium.webdriver.common.touch_action import TouchAction
import time

이번에 exceptions 이 부분을 처음으로 사용해봤다.
 

wd = appiumtest1.music()
time.sleep(2)

상성 뮤직 실행
 

action = TouchAction(wd)
wd.find_element(By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.TextView').click()
time.sleep(1)
wd.find_element(By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.TextView').click()
time.sleep(1)

wd.find_element(By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.Button[1]').click()
time.sleep(1)
wd.find_element(By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.Button[1]').click()
time.sleep(1)

wd.find_element(By.XPATH, '//android.view.ViewGroup[@content-desc="곡, 탭 6개 중 3번째 탭"]/android.widget.TextView').click()
time.sleep(1)
wd.find_element(By.XPATH, '//android.widget.ImageView[@content-desc="셔플 재생"]').click()
time.sleep(1)

테스트 절차의 2~6까지의 스크립트
저번에는 좌표를 지정하여 터치 스크립트를 짰는데, 해상도 이슈도 있는 것 같아서 이번에는 XPATH를 활용했다.
*XPATH 정보도 인스펙터에서 얻을 수 있음
 

try:
    element = wd.find_element(By.XPATH, '//android.widget.FrameLayout[@content-desc="일시정지"]/android.widget.ImageView')
    print("PASS")
except NoSuchElementException:
    print("FAIL")

6번까지 실행 후 음악이 재생되는지를 확인하는 스크립트
해당 XPATH가 존재할 경우 PASS를 출력, 아닌 경우 FAIL을 출력해준다.
 

상용 앱이므로 별 이슈가 없는 것을 볼 수 있다.

728x90

'Appium' 카테고리의 다른 글

[Appium] 시나리오  (0) 2023.11.10
[Appium] 시나리오  (0) 2023.09.16