Python+uiautomator2實(shí)現(xiàn)手機(jī)鎖屏解鎖功能
業(yè)務(wù)需求:需要測(cè)試手機(jī)滑動(dòng)解鎖失敗時(shí)事件的次數(shù)及等待的時(shí)間,本來想利用Python+Appium實(shí)現(xiàn),但是Appium運(yùn)行時(shí)自動(dòng)給我解鎖了....
部分解釋摘抄自:https://testerhome.com/topics/11357
python-uiautomator2是一個(gè)自動(dòng)化測(cè)試開源工具,僅支持Android平臺(tái)的原生應(yīng)用測(cè)試
python-uiautomator2封裝了谷歌自帶的uiautomator2測(cè)試框架,提供便利的python接口。他允許測(cè)試人員直接在PC上編寫Python的測(cè)試代碼,操作手機(jī)應(yīng)用,完成自動(dòng)化,大大提高了自動(dòng)化代碼編寫的效率
以下圖片使用Windows畫圖軟件
如圖所示,python-uiautomator2主要分為兩個(gè)部分,python客戶端,移動(dòng)設(shè)備
python端: 運(yùn)行腳本,并向移動(dòng)設(shè)備發(fā)送HTTP請(qǐng)求 移動(dòng)設(shè)備:移動(dòng)設(shè)備上運(yùn)行了封裝了uiautomator2的HTTP服務(wù),解析收到的請(qǐng)求,并轉(zhuǎn)化成uiautomator2的代碼。整個(gè)過程
在移動(dòng)設(shè)備上安裝atx-agent(守護(hù)進(jìn)程), 隨后atx-agent啟動(dòng)uiautomator2服務(wù)(默認(rèn)7912端口)進(jìn)行監(jiān)聽 在PC上編寫測(cè)試腳本并執(zhí)行(相當(dāng)于發(fā)送HTTP請(qǐng)求到移動(dòng)設(shè)備的server端) 移動(dòng)設(shè)備通過WIFI或USB接收到PC上發(fā)來的HTTP請(qǐng)求,執(zhí)行制定的操作安裝工具 Python2或者Python3均可。(也可以嘗試使用Android上Python客戶端:QPython) 移動(dòng)設(shè)備環(huán)境搭建安裝adb
如命令行可以執(zhí)行adb devices,則跳過此步驟從谷歌官網(wǎng)下載Android Platform Tools https://developer.android.com/studio/releases/platform-tools.html,解壓,并加包含adb.exe的目錄加入到系統(tǒng)的PATH中。
安裝python-uiautomator2
pip install --pre -U uiautomator2
設(shè)備安裝atx-agent
首先設(shè)備連接到PC,并能夠adb devices發(fā)現(xiàn)該設(shè)備。
# 從github下載atx-agent文件,并推送到手機(jī)。在手機(jī)上安裝包名為`com.github.uiautomator`的apk$ python -m uiautomator2 initsuccess
最后提示success,代表atx-agent初始化成功。
應(yīng)用及操作調(diào)用uiautomator2的過程
配置手機(jī)設(shè)備參數(shù),設(shè)置具體操作的是哪一臺(tái)手機(jī) 抓取手機(jī)上應(yīng)用的控件,制定對(duì)應(yīng)的控件來進(jìn)行操作 對(duì)抓取到的控件進(jìn)行操作,比如點(diǎn)擊、填寫參數(shù)等。配置手機(jī)設(shè)備參數(shù)
python-uiautomator2連接手機(jī)的方式有兩種,一種是通過WIFI,另外一種是通過USB。兩種方法各有優(yōu)缺點(diǎn)。WIFI最便利的地方要數(shù)可以不用連接數(shù)據(jù)線,USB則可以用在PC和手機(jī)網(wǎng)絡(luò)不在一個(gè)網(wǎng)段用不了的情況。
1,使用WIFI連接
手機(jī)獲取到手機(jī)的IP,并確保電腦可以PING通手機(jī)。手機(jī)的IP可以在設(shè)置-WIFI設(shè)置里面獲取到。比如手機(jī)的IP是192.168.0.100,連接設(shè)備的代碼為
import uiautomator2 as u2d = u2.connect(’192.168.0.100’)
2.使用USB連接
手機(jī)的序列號(hào)可以通過adb devices獲取到,假設(shè)序列號(hào)是123456f,連接代碼為
import uiautomator2 as u2d = u2.connect_usb(’123456f’)
抓取手機(jī)上應(yīng)用的控件
我這里使用的weditor,
1.終端中輸入 pip install weditor安裝weditor
2.終端中輸入python -m weditor啟動(dòng)weditor
下圖為網(wǎng)頁的截圖
然后再選取元素定位就可以完成本次需求
代碼如下:
#_*_ coding:utf-8_*_import uiautomator2 as u2import reimport time STOP_COUNT=150d = u2.connect() #輸入滑動(dòng)解鎖碼def do_password(count): #通過weditor獲取到的圖案位置 d.swipe_points([(0.304, 0.431), (0.507, 0.435), (0.5, 0.636)], 0.1) #檢驗(yàn)是否輸入正確def do_check(): #檢查輸入密碼是否達(dá)到現(xiàn)在 if d(resourceId='android:id/message').exists:message = d(resourceId='android:id/message').get_text()#取得輸密碼的次數(shù)times = re.findall(’d+’, message)[0]#需要等待的時(shí)間timeout = re.findall(’d+’, message)[1]print('暫時(shí)不能輸入密碼,這是第$s次輸入,需要等待%s才可以再次輸入' % (times, timeout))return True, times, timeout else:print('可以輸入')return False, 0, 0 count = 0 while True: ret, times, timeout = do_check() if ret:d.screenshot(times + 'times_' + timeout + 's.jpg')if int(times) >= STOP_COUNT: breaktime.sleep(int(timeout))d(resourceId='android:id/button3').click() count = count + 1 do_password(count)
效果圖:
到此這篇關(guān)于Python+uiautomator2實(shí)現(xiàn)手機(jī)鎖屏解鎖功能的文章就介紹到這了,更多相關(guān)python uiautomator2手機(jī)鎖屏解鎖內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 阿里前端開發(fā)中的規(guī)范要求2. jsp實(shí)現(xiàn)登錄驗(yàn)證的過濾器3. css代碼優(yōu)化的12個(gè)技巧4. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法5. HTML DOM setInterval和clearInterval方法案例詳解6. 輕松學(xué)習(xí)XML教程7. jsp EL表達(dá)式詳解8. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))9. xpath簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理10. 解析原生JS getComputedStyle
