[๋ชจ๋ฐ”์ผ ๋งคํฌ๋กœ] ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ์ž๋™ ๋…นํ™”, selenium + appium + screen record
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋””์ง€ํ„ธ ๊ฟ€ํŒ

[๋ชจ๋ฐ”์ผ ๋งคํฌ๋กœ] ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ์ž๋™ ๋…นํ™”, selenium + appium + screen record

by ์ผ์ƒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค 2022. 9. 27.

์—ก ํ™”๋ฉด ์บก์ณ๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ ํ™”๋ฉด ๋…นํ™”๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ? ํ™”๋ฉด๋…นํ™”๋Š” ์ข€ ๋ฐฉ๋ฒ•์ด ์–ด๋ ต์ง€ ์•Š์„๊นŒ ๊ณ ๋ฏผํ•˜์…จ๋˜ ๋ถ„๋“ค์€ ํ•ด๋‹น ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ ์ „์— ํ™”๋ฉด ์บก์ณ ๊ด€๋ จํ•œ ํฌ์ŠคํŒ…์€ ์•„๋ž˜ ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

[๋ชจ๋ฐ”์ผ ๋งคํฌ๋กœ] ๋‰ด์Šค URL ํด๋ฆญ ๋ฐ ๋ชจ๋ฐ”์ผ ํ™”๋ฉด ์บก์ณ ์ž๋™ํ™”, ๋ชจ๋ฐ”์ผ ์Šคํฌ๋ฆฐ ์บก์ณ, selenium + appium + s

appium์„ ์•Œ๊ณ  ๋ถ€ํ„ฐ๋Š” ๋ชจ๋ฐ”์ผ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์ด ๋งŽ์•„์กŒ์–ด์š”. ์ฒ˜์Œ ๋ฐฐ์šธ ๋• ๋ชฐ๋ž๋Š”๋ฐ ํ•˜๋‹ค๋ณด๋‹ˆ, ๋ชจ๋ฐ”์ผ ๋งคํฌ๋กœ๋Š” ๋‹ค๋“ค ์ด๊ฑธ๋กœ ๊ตฌํ˜„ํ•˜๊ฒ ๊ตฌ๋‚˜ ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค. ๋ผ๋–ผ๋Š” ์ด๋Ÿฐ๊ฒŒ ์žˆ์—ˆ

odaily.tistory.com

์‚ฌ์ „ ์ค€๋น„๋ฌผ

  • ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๊ธฐ๊ณ„
  • python ์„ค์น˜ , appium server gui ์„ค์น˜
  • adb ์„ค์น˜

[์นด์นด์˜ค๋ทฐ ์ž๋™ํ™”] ์นด๋ทฐ ๊ด€๋ฆฌ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ appium ์‚ฌ์šฉ ๋ง›๋ณด๊ธฐ 1๋‹จ๊ณ„

์˜ˆ๋ž‘์ด๊ฐ€ ์ด๋Ÿฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๋ ค์ค˜์„œ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ํ•ด๋ณด๋Š” ๊ฒƒ์ด๋ผ์„œ ๋‚ฏ์„ค์—ˆ์ง€๋งŒ, ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์ฒ˜๋Ÿผ ์ฒซ ์…‹ํŒ…๋งŒ ์ž˜ํ•ด๋ณด๋ฉด ๋‹ค ๋น„์Šทํ•˜๊ณ  ๊ฒฐ๊ตญ์—” python์œผ๋กœ ์ฝ”๋”ฉ

odaily.tistory.com


์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์†Œ๊ฐœ๋“œ๋ฆฌ๋ ค ํ•ฉ๋‹ˆ๋‹ค.

  • ํ™”๋ฉด ๋…นํ™”ํŒŒ์ผ์„ ์ €์žฅํ•  ๊ฒฝ๋กœ์— ๋ฏธ๋ฆฌ ๋‹ค๋ฅธ .mp4 ํŒŒ์ผ์„ ๋„ฃ์–ด๋‘”๋‹ค
  • ํ™”๋ฉด ๋…นํ™”๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค
  • ์ข…๋ฃŒ์‹œ ๋‚˜์˜ค๋Š” output์„ ๋ฐ›์•„ ํ•ด๋‹น ๊ฒฝ๋กœ์— ๊ฐ™์€ .mp4 ์ด๋ฆ„์œผ๋กœ ๋ฎ์–ด์“ด๋‹ค.


์œ„ ์„ค๋ช…๊ณผ ๊ฐ™์ด ํ™”๋ฉด ๋…นํ™” ํŒŒ์ผ์„ ์ €์žฅํ•  ๊ฒฝ๋กœ์— ๋ฏธ๋ฆฌ click.mp4๋ผ๋Š” ์˜์ƒ์„ ๋„ฃ์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์ž„์˜๋กœ ๋„ฃ์–ด๋‘์ง€ ์•Š๊ณ  ํ•˜๋ฉด ์ ค ์ข‹์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์ข€ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ ธ์„œ ์ €๋Š” ์ข€ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ ํƒํ–ˆ๋‹ต๋‹ˆ๋‹ค. ์•„๋ฌด ์˜์ƒ์ด๋‹ค ๋„ฃ์–ด๋‘์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ ์„ค์ • ๋ฐ ์•ฑ ์‹คํ–‰ ์†Œ์Šค

#๊ฒฝ๋กœ์ง€์ •
SCREEN_PATH = '%s/' % os.getcwd() + "recording/"

#์‹คํ–‰์‹œํ‚ฌ์•ฑ ์„ค์ •
caps = {}
caps["platformName"] = "Android"
caps["appium:platformVersion"] = "6.0.1"
caps["appium:deviceName"] = "S916N"
caps["appium:app"] = "/Users/KakaoTalk.apk"
caps["appium:automationName"] = "Appium"
caps["appium:newCommandTImeout"] = 300
caps["appium:appPackage"] = "com.kakao.talk"
caps["appium:appActivity"] = "com.kakao.talk.activity.๋ฉ”์ธ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


driver = webdriver.Remote("http://0.0.0.0:4723/wd/hub", caps)

๋ ˆ์ฝ”๋”ฉ ์‹œ์ž‘

  driver.start_recording_screen()


๋ ˆ์ฝ”๋”ฉ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ ์‚ฌ์ด์—๋Š” ์•ฑ์—์„œ ๋…นํ™” ํ•˜๊ณ  ์‹ถ์€ ์•ก์…˜์— ๋Œ€ํ•ด ์ฝ”๋”ฉํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ ˆ์ฝ”๋”ฉ ์ข…๋ฃŒ

video_rawdata = driver.stop_recording_screen()    

filepath = os.path.join(SCREEN_PATH, "click.mp4")
    
with open(filepath,"wb") as vd:
	vd.write(base64.b64decode(video_rawdata))

์ €๋Š” ๋…นํ™” ํŒŒ์ผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ณ  ์‹ถ์€๊ฒŒ ์žˆ์–ด์„œ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค. ๋‹ค๋“ค selenium๊ณผ appium์„ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ๊ณ„์‹ ๋‹ค๋ฉด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ์„ธ์ƒ ๋ชจ๋“  ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์ด ์ž๋™ํ™” ๋˜๋Š” ๊ทธ๋‚ ๊นŒ์ง€ ์—ด์‹ฌํžˆ ์ •๋ณด ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

์•„๋ž˜ ์˜์ƒ์€ Appium ์„ค์น˜ ๋ฐ ์„ค์ • ๊ฐ€์ด๋“œ ์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€