您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎樣用Python實(shí)現(xiàn)自動(dòng)化操作Android手機(jī),小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、【必須】安裝adb工具
adb全稱Android Debug Bridge,是Android系統(tǒng)的調(diào)試工具。
下并安裝ADB Installer v1.4.3,下載鏈接: http://pan.webscraping.cn:8000/index.php/s/7kDAJUOmKEa1h5N 安裝完成后,啟動(dòng)一個(gè)新的cmd窗口,輸入adb devices,若無錯(cuò)誤提示則表明安裝成功。
Ubuntu下安裝adb可以參考這篇文章: http://bernaerts.dyndns.org/linux/74-ubuntu/354-ubuntu-xenial-android-adb-fastboot-qtadb)
二、【可選】安裝UI Automator Viewer輔助工具
為了使用UI Automator Viewer這個(gè)輔助分析工具,我們需要先安裝Android SDK,步驟如下:
1. 下載并安裝Java 8
2. 下載并安裝Google Android SDK
3. 啟動(dòng)Android SDK Manager,選擇并安裝Android SDK Platform-tools.
4. 雙擊uiautomatorviewer.bat,啟動(dòng)UI Automator Viewer,點(diǎn)擊第二個(gè)圖標(biāo)獲取設(shè)備截圖及相關(guān)UI信息,如下圖所示。
三、【主角】AndroidViewClient
AndroidViewClient是用純Python編寫的Android應(yīng)用程序自動(dòng)測(cè)試框架,它不依賴其它程序(例如 monkeyrunner, jython)。AndroidViewClient在底層是通過調(diào)用adb命令實(shí)現(xiàn)對(duì)Android設(shè)備的控制,因此在本文的一開始就先介紹了adb的安裝。
開始下文之前,假設(shè)你已經(jīng)安裝配置好Python運(yùn)行環(huán)境,否則請(qǐng)先安裝Python 2.7(注意:AndroidViewClient不兼容Python3)。
1. 安裝AndroidViewClient
項(xiàng)目主頁: https://github.com/dtmilano/AndroidViewClient
推薦用easy_install安裝:
easy_install --upgrade androidviewclient
安裝詳細(xì)說明見這里: https://github.com/dtmilano/AndroidViewClient/wiki#installation
PS:依賴庫比較多,安裝需要有點(diǎn)耐心。
2. 測(cè)試安裝是否成功
下載 https://github.com/dtmilano/AndroidViewClient/archive/master.zip 包,解壓并切換到examples目錄下,執(zhí)行python check-import.py,如果沒有問題,會(huì)輸出OK。
3. 寫一個(gè)例子
實(shí)現(xiàn)這樣一個(gè)功能:
點(diǎn)擊屏幕微信圖標(biāo)啟動(dòng)微信,點(diǎn)擊第一個(gè)聯(lián)系人/群,發(fā)送一個(gè)報(bào)時(shí)消息。
代碼如下:
view plain copy to clipboard print ?
# coding: utf-8
# 點(diǎn)擊屏幕微信圖標(biāo)啟動(dòng)微信,點(diǎn)擊第一個(gè)聯(lián)系人/群,發(fā)送一個(gè)報(bào)時(shí)消息
import sys
import os
import re
import time
from com.dtmilano.android.viewclient import ViewClient
def test():
# 連接手機(jī)
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device, serialno)
# 按HOME鍵
device.press('KEYCODE_HOME')
time.sleep(3)
# 找到微信圖標(biāo)
vc.dump()
weixin_button = vc.findViewWithTextOrRaise(u'微信')
# 點(diǎn)擊微信圖標(biāo)
weixin_button.touch()
time.sleep(10)
# 找到第一個(gè)聯(lián)系人/群
# 可以使用UI Automator Viewer查看到對(duì)應(yīng)第一個(gè)聯(lián)系人/群的resource-id為"com.tencent.mm:id/auj"
vc.dump()
group_button = vc.findViewByIdOrRaise("com.tencent.mm:id/auj")
# 點(diǎn)擊進(jìn)群
group_button.touch()
time.sleep(5)
# 找到輸入框并輸入當(dāng)前時(shí)間
vc.dump()
vc.findViewByIdOrRaise("com.tencent.mm:id/aep").setText('Now:{}'.format(time.strftime('%Y-%m-%d %H:%M:%S')))
time.sleep(3)
# 點(diǎn)擊發(fā)送按鈕
vc.dump()
vc.findViewWithTextOrRaise(u'發(fā)送').touch()
if __name__ == '__main__':
test()
4. 高級(jí)用法:Culebra的使用
Culebra可以幫助我們自動(dòng)生成(錄制)AndroidViewClient腳本。它提供了一個(gè)GUI,當(dāng)我們通過GUI上操作手機(jī),就會(huì)自動(dòng)產(chǎn)生AndroidViewClient控制腳本模板,我們可以再在這個(gè)模板腳本基礎(chǔ)上進(jìn)行修改,實(shí)現(xiàn)更復(fù)雜的功能。Culebra的詳細(xì)說明見其主頁: https://github.com/dtmilano/AndroidViewClient/wiki/culebra
我們來做一個(gè)測(cè)試,錄制一個(gè)”點(diǎn)擊微信聊天文字輸入框,然后輸入一段文本test"操作的腳本: 首先啟動(dòng)Culebra(culebra文件位于AndroidViewClient包的tools目錄下,我把后綴名改成.py了),命令如下:
view plain copy to clipboard print ?
python culebra.py -G --scale 0.5
如下所示為完成操作之后的Culebra的GUI截圖:
下面為Culebra自動(dòng)錄制的腳本:
view plain copy to clipboard print ?
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import reimport sys
import os
from com.dtmilano.android.viewclient import ViewClient
TAG = 'CULEBRA'
_s = 5
_v = '--verbose' in sys.argv
kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False}
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1)
kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'debug': {}, 'startviewserver': True, 'compresseddump': True}
vc = ViewClient(device, serialno, **kwargs2)
#vc.dump(window='-1') # FIXME: seems not needed
vc.dump(window=-1)
no_id1 = vc.findViewByIdOrRaise("id/no_id/1")
no_id1 = vc.findViewWithContentDescriptionOrRaise(u'''''當(dāng)前所在頁面,與家好月圓(19)的聊天''')
com_tencent_mm___id_ds5 = vc.findViewByIdOrRaise("com.tencent.mm:id/ds5")
com_tencent_mm___id_cgo = vc.findViewByIdOrRaise("com.tencent.mm:id/cgo")
com_tencent_mm___id_ts = vc.findViewByIdOrRaise("com.tencent.mm:id/ts")
com_tencent_mm___id_iz = vc.findViewByIdOrRaise("com.tencent.mm:id/iz")
com_tencent_mm___id_j0 = vc.findViewByIdOrRaise("com.tencent.mm:id/j0")
com_tencent_mm___id_j0 = vc.findViewWithContentDescriptionOrRaise(u'''''返回''')
com_tencent_mm___id_j1 = vc.findViewByIdOrRaise("com.tencent.mm:id/j1")
com_tencent_mm___id_j1 = vc.findViewWithTextOrRaise(u'家好月圓(19)')
com_tencent_mm___id_iw = vc.findViewByIdOrRaise("com.tencent.mm:id/iw")
com_tencent_mm___id_iw = vc.findViewWithContentDescriptionOrRaise(u'''''聊天信息''')
no_id9 = vc.findViewByIdOrRaise("id/no_id/9")
no_id10 = vc.findViewByIdOrRaise("id/no_id/10")
com_tencent_mm___id_lz = vc.findViewByIdOrRaise("com.tencent.mm:id/lz")
no_id12 = vc.findViewByIdOrRaise("id/no_id/12")
# ......
# 省略多行類似代碼
# ......
com_tencent_mm___id_aen = vc.findViewWithContentDescriptionOrRaise(u'''''切換到按住說話''')
com_tencent_mm___id_aeo = vc.findViewByIdOrRaise("com.tencent.mm:id/aeo")
com_tencent_mm___id_aep = vc.findViewByIdOrRaise("com.tencent.mm:id/aep")
com_tencent_mm___id_aer = vc.findViewByIdOrRaise("com.tencent.mm:id/aer")
com_tencent_mm___id_aer = vc.findViewWithContentDescriptionOrRaise(u'''''表情''')
com_tencent_mm___id_aeu = vc.findViewByIdOrRaise("com.tencent.mm:id/aeu")
com_tencent_mm___id_aeu = vc.findViewWithContentDescriptionOrRaise(u'''''更多功能按鈕,已折疊''')
vc.findViewByIdOrRaise("com.tencent.mm:id/aep").setText(u"test")
vc.sleep(_s)
vc.dump(window=-1)
在相同窗口環(huán)境下執(zhí)行該腳本就可以自動(dòng)重復(fù)上述操作。
以上就是怎樣用Python實(shí)現(xiàn)自動(dòng)化操作Android手機(jī),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。