自動化測試之Android測試腳本

首先交代本文測試腳本所用的自動化測試框架爲Uiautomator2

一、連接設備

    def __init__(self):
        self.d = u2.connect("192.168.2.30")

這裏用要連接的手機的IP

二、判斷屏幕是否休眠,如果休眠要喚醒

        if self.d(resourceId="com.android.systemui:id/notification_stack_scroller").exists:  # 獲取屏幕鎖屏的狀態屬性
            print("處於鎖屏狀態")
            self.d.screen_on()  # 把屏幕喚醒
            sleep(1)
            self.d.swipe(500, 1600, 500, 200, 0.5)  # 滑動,for 0.5s(default)
            sleep(1)
        else:
            print("當前非鎖屏狀態")  # 當前非鎖屏狀態

以上代碼是vivo手機鎖屏狀態的判斷,具體手機型號請自己確定判斷方法和解鎖方式

三、安裝apk

os.popen('adb install ' + apkDir)

apkDir爲apk的路徑,可爲運行py文件時從外部傳入,

python3 xxx.py apkDir

四、運行apk

經過前三步之後apk就安裝上並自動打開了,然後就可以控制App運行了

主要方法有:

1.click(),比如這樣,比較簡單

self.d(resourceId="com.android.packageinstaller:id/ok_button").click()

2.App的上滑下滑

self.d.swipe(500, 1600, 500, 200, 0.5)  # 滑動,for 0.5s(default)

參數分別爲開始點座標和結束點座標和滑動時間

execute(scrollable=True).scroll.toEnd()  # 向下滑動到最下面

3.返回

execute.press("back")

同理,傳"home"爲點擊home鍵

4.輸入

execute(text="請輸入答案…").send_keys('自動化測試')

找到需要輸入內容的EditText元素,send_keys

5.獲取腳本運行異常log

print('腳本異常了')
test_status = 5
traceback.print_exc(file=open('/Users/xxx/Documents/logs/py_log.log', 'w'))

傳入log輸出的路徑即可,當然要先引入traceback

import traceback

6.獲取App運行log

import subprocess


# w寫模式 每次寫入新內容,原來的內容會被覆蓋
# a追加模式 不清除原來內容,直接原來的基礎上添加新數據
file = open('/Users/xxx/Documents/logs/alg_adb_log.log', 'w')
ps = subprocess.Popen('adb logcat | grep -i com.xxx.xxx', stderr=subprocess.PIPE,
stdout=file, shell=True)

傳入輸出路徑和包名,即可獲取App相關logcat

如果要獲取crash日誌,需要遍歷logcat,找出Runtime異常

with open('/Users/xxx/Documents/logs/alg_adb_log.log', 'r', encoding='utf-8', errors='ignore') as f:
for line in f.readlines():
   if 'AndroidRuntime' in line:
        xxx            
   		break
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章