appium์ ์๊ณ ๋ถํฐ๋ ๋ชจ๋ฐ์ผ์์ ํ ์ ์๋ ๊ฒ๋ค์ด ๋ง์์ก์ด์. ์ฒ์ ๋ฐฐ์ธ ๋ ๋ชฐ๋๋๋ฐ ํ๋ค๋ณด๋, ๋ชจ๋ฐ์ผ ๋งคํฌ๋ก๋ ๋ค๋ค ์ด๊ฑธ๋ก ๊ตฌํํ๊ฒ ๊ตฌ๋ ๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋์๋ต๋๋ค. ๋ผ๋ผ๋ ์ด๋ฐ๊ฒ ์์๋ ์ถ์ง๋ง selenium์ด ์ด๋ ๊ฒ ๋ง์ ๋ณํ๋ฅผ ๊ฐ์ ธ๋ค ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ค์.
์ค๋์ ์ฃผ์ ๋ ๋งํฌ ํด๋ฆญ ๋ฐ ๋ชจ๋ฐ์ผ ํ๋ฉด ์คํฌ๋ฆฐ ์บก์ณ ๋จ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ์ผ ์ข์๋ ๊ฒ์ ์คํฌ๋ฆฐ์บก์ณ ๋ฌ ํ๋ฉด์ด PC ํน์ ํด๋์ ๋ฐ๋ก ์ ์ฅ๋๊ฒ๋ ํ ์ ์์๋ ๊ฒ์ด์์. ์ ๋ง ์ข์ ์ฅ์ ์ธ ๊ฑด, ๋ํฐ ์ฉ๋๋ ๊ด๋ฆฌ ํ ์ ์๊ณ , ๋ ์ ๊ฐ ์ํ๋ ์ด๋ฏธ์ง๋ฅผ ํด๋๋ณ๋ก ์ ๋ฆฌ๋ ํ ์ ์๋ค๋ ๊ฒ๋๋ค. ์ค๋์ ์ด๋ฏธ์ง ์ ์ฅ์ด์ง๋ง, ํ๋ฉด ๋ นํ๋ ๊ฐ๋ฅํ์ฌ, ๋ค์ ๋ฒ์ ํ๋ฉด ๋ นํ ๋ฐฉ๋ฒ๋ ๊ฐ์ ธ์ ๋ณผ ์์ ์ ๋๋ค.
์์ค์ฝ๋
from selenium.webdriver.common.by import By
from appium import webdriver
from time import sleep
import os
# ํ์ผ ์ ์ฅํ ๊ฒฝ๋ก ์ค์ ํ๊ธฐ
SCREEN_PATH = '%s/' % os.getcwd() + "screenshot/"
# SLEEP TIME
PAUSE_TIME = 0.1
LOADING_WAIT_TIME = 1
LOADING_SCROLL_WAIT_TIME = 3
LOADING_TAB_WAIT_TIME = 5
#์๋๋ก์ด๋ ์ ๋ณด ์
๋ ฅํ๊ธฐ
caps = {}
caps["platformName"] = "Android"
caps["appium:platformVersion"] = "6.0.1"
caps["appium:deviceName"] = "S916N"
caps["appium:app"] = "์คํํ ์ฑ ์ค์น ํ์ผ ๊ฒฝ๋ก(.apk)"
caps["appium:automationName"] = "Appium"
caps["appium:newCommandTImeout"] = 300
caps["appium:appPackage"] = "com.kakao.talk"
caps["appium:appActivity"] = "์คํํ ์ฑ ๋ฉ์ธ Activity"
caps["appium:udid"] = "ํด๋ํฐ udid"
caps["appium:noReset"] = "true"
caps["appium:fullReset"] = "false"
caps["appium:ensureWebviewsHavePages"] = True
caps["appium:nativeWebScreenshot"] = True
caps["appium:newCommandTimeout"] = 3600
caps["appium:connectHardwareKeyboard"] = True
#๋ณผ ์ฝํ
์ธ ๋งํฌ ์ ๋ณด
with open('/Users/program/info_screenshot.json') as json_file:
info = json.load(json_file)
#appium ์๋ฒ ์ฐ๋
driver = webdriver.Remote("http://0.0.0.0:4723/wd/hub", caps)
#์นด์นด์คํก ์คํ ํ ์น๊ตฌ ํญ ์ ํ
ele = driver.find_element(By.XPATH, value ='//android.widget.RelativeLayout[@content-desc="์น๊ตฌ ํญ"]')
ele.click()
sleep(LOADING_TAB_WAIT_TIME)
#๊ฒ์ ๋ฒํผ ํด๋ฆญ
ele = driver.find_element(By.XPATH, value='//android.widget.TextView[@content-desc="๊ฒ์ ๋ฒํผ"]')
ele.click()
sleep(LOADING_WAIT_TIME)
#๋ด์ด๋ฆ ๊ฒ์(๋ณธ์ธํํ
๋งํฌ ๋ณด๋ด๊ธฐ)
ele = driver.find_element(By.XPATH, value='/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.EditText')
ele.send_keys("๋ณธ์ธ ์นด์นด์คํก ์ด๋ฆ")
sleep(LOADING_WAIT_TIME)
#์นด์นด์คํก ํ๋กํ ํด๋ฆญํ๊ธฐ
ele = driver.find_element(By.ID, value='com.kakao.talk:id/profile')
ele.click()
sleep(LOADING_WAIT_TIME)
sleep(LOADING_WAIT_TIME)
#1:1 ์ฑํ
๊ฑธ๊ธฐ
ele = driver.find_element(By.XPATH, value='//android.widget.RelativeLayout[@content-desc="1:1์ฑํ
๋ฒํผ"]/android.widget.ImageView')
ele.click()
#์ฑํ
์์ ๋ฐ๋ผ ์กฐ๊ธ ๋ก๋ฉ์ด ๊ธธ์ด์ง๋๋ผ๊ตฌ์
sleep(LOADING_TAB_WAIT_TIME)
sleep(LOADING_TAB_WAIT_TIME)
#์นด์นด์คํก ๋ฉ์์ง์ ๋ด์ค๋งํฌ ๋ณด๋ด๊ธฐ
ele = driver.find_element(By.ID, value='com.kakao.talk:id/message_edit_text')
ele.send_keys("๋ด์ค๋งํฌ")
sleep(LOADING_SCROLL_WAIT_TIME)
#๋ฉ์์ง ์ ์ก
ele = driver.find_element(By.ID, value='com.kakao.talk:id/send')
ele.click()
sleep(LOADING_WAIT_TIME)
sleep(LOADING_WAIT_TIME)
#๋ฉ์์ง ๋งํฌ ํด๋ฆญํ๊ธฐ, ๋ฐฉ๊ธ ๋ฉ์์ง ๋ณด๋๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง message ํด๋ฆญํ๋ ๋ฐฉ๋ฒ
ele_arry= driver.find_elements(By.ID, value='com.kakao.talk:id/message')
index = len(ele_arry)
ele_arry[index-1].click()
#ํ์ฌ ํ๋ฉด ์บก์ณ
isSave_content = driver.save_screenshot(SCREEN_PATH + "ํ์ผ๋ช
.png")
sleep(LOADING_WAIT_TIME)
#๋ซ๊ธฐ ๋ฒํผ ์์ ๊ฒฝ์ฐ ๋ด์ค๋งํฌ ๋ซ๊ธฐ
ele_close = driver.find_element(By.ID, "com.kakao.talk:id/close")
ele_close.click()
์ ๊ฐ์ ๊ฒฝ์ฐ ๊ด์ฌ ์๋ ๊ธฐ์ฌ ๋งํฌ๋ฅผ ๋ค ์คํฌ๋ฉํ์ฌ, ๊ตฌ๊ธ ๋ฌธ์์ ์ ์ฅํ๊ณ ์๋ค๊ฐ, ๊ตฌ๊ธ๋ฌธ์์์ ํด๋น ๋งํฌ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ ํ๋ฉด ์บก์ณ๋ฅผ ํ๋๋ก ํ์์ต๋๋ค. ์์ ์ ์ ๋ฌธ๋ณด๋ค๊ฐ ๊ด์ฌ ์๋ ๊ธฐ์ฌ๋ ๋ชจ์์ ๋ณด๊ดํ์๋๋ฐ ์ถ์ต์ด ์๋ก์๋กํ๋ค์. ์๋ ๋ก๊ทธ์์ ๋์งํธ๋ก ๋ณํ๋ง ํ์ ๋ฟ์ด๋ค์.
ํ ์คํธ ์์ ๋ก๋ ์ ๊ฐ ์ฌ์ฉํ๋ ์นด์นด์ค๋ทฐ ์ฑ๋์ ์ด์ฉํ์๋ต๋๋ค. ๋ชจ๋ฐ์ผ์์ ๋งคํฌ๋ก๋ฅผ ํ๋ค๋ณด๋, ์๋๋ก์ด๋ ํฐ ์ฌ์ ์ข์ ๊ฑธ ๊ตฌ์ ํ๊ณ ์ถ์ด์ก์ด์. ๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ๋ ํฐ ์ผ์ด์ค๊ฐ ๋๋๊ตฐ์.
IT ์ผ์ ์ํ, ๋ชจ๋ ๋ฐ๋ณต ์ ์ธ ์ ๋ฌด๋ฅผ ํธ๋ฆฌํ๊ฒ ์๋ํํ๋ ๊ทธ๋ ๊น์ง ์ด์ฌํ ์ ๋ณด ๊ณต์ ๋๋ ค์. APPIUM์ ๋์์์ผ๋ก๋ ์ ๊ณตํด๋๋ฆด ์์ ์ ๋๋ค.
๊ฒฐ๊ณผ๋ฌผ
* ๊ธฐ์ฌ ๋ด์ฉ ๊ณต์ ๊ฐ ํน์๋ ๋ฌธ์ ์๊ธธ๊น ํ์ฌ ํ์ด์ง ์ ์ผ ์๋๋ก ๋ด๋ ค ํ๋ฉด ์บก์ณํ ์์ ์ ๋๋ค
๋๊ธ