您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎樣用Python實現自動化操作Android手機,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、【必須】安裝adb工具
adb全稱Android Debug Bridge,是Android系統的調試工具。
下并安裝ADB Installer v1.4.3,下載鏈接: http://pan.webscraping.cn:8000/index.php/s/7kDAJUOmKEa1h5N 安裝完成后,啟動一個新的cmd窗口,輸入adb devices,若無錯誤提示則表明安裝成功。
Ubuntu下安裝adb可以參考這篇文章: http://bernaerts.dyndns.org/linux/74-ubuntu/354-ubuntu-xenial-android-adb-fastboot-qtadb)
二、【可選】安裝UI Automator Viewer輔助工具
為了使用UI Automator Viewer這個輔助分析工具,我們需要先安裝Android SDK,步驟如下:
1. 下載并安裝Java 8
2. 下載并安裝Google Android SDK
3. 啟動Android SDK Manager,選擇并安裝Android SDK Platform-tools.
4. 雙擊uiautomatorviewer.bat,啟動UI Automator Viewer,點擊第二個圖標獲取設備截圖及相關UI信息,如下圖所示。
三、【主角】AndroidViewClient
AndroidViewClient是用純Python編寫的Android應用程序自動測試框架,它不依賴其它程序(例如 monkeyrunner, jython)。AndroidViewClient在底層是通過調用adb命令實現對Android設備的控制,因此在本文的一開始就先介紹了adb的安裝。
開始下文之前,假設你已經安裝配置好Python運行環境,否則請先安裝Python 2.7(注意:AndroidViewClient不兼容Python3)。
1. 安裝AndroidViewClient
項目主頁: https://github.com/dtmilano/AndroidViewClient
推薦用easy_install安裝:
easy_install --upgrade androidviewclient
安裝詳細說明見這里: https://github.com/dtmilano/AndroidViewClient/wiki#installation
PS:依賴庫比較多,安裝需要有點耐心。
2. 測試安裝是否成功
下載 https://github.com/dtmilano/AndroidViewClient/archive/master.zip 包,解壓并切換到examples目錄下,執行python check-import.py,如果沒有問題,會輸出OK。
3. 寫一個例子
實現這樣一個功能:
點擊屏幕微信圖標啟動微信,點擊第一個聯系人/群,發送一個報時消息。
代碼如下:
view plain copy to clipboard print ?
# coding: utf-8
# 點擊屏幕微信圖標啟動微信,點擊第一個聯系人/群,發送一個報時消息
import sys
import os
import re
import time
from com.dtmilano.android.viewclient import ViewClient
def test():
# 連接手機
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device, serialno)
# 按HOME鍵
device.press('KEYCODE_HOME')
time.sleep(3)
# 找到微信圖標
vc.dump()
weixin_button = vc.findViewWithTextOrRaise(u'微信')
# 點擊微信圖標
weixin_button.touch()
time.sleep(10)
# 找到第一個聯系人/群
# 可以使用UI Automator Viewer查看到對應第一個聯系人/群的resource-id為"com.tencent.mm:id/auj"
vc.dump()
group_button = vc.findViewByIdOrRaise("com.tencent.mm:id/auj")
# 點擊進群
group_button.touch()
time.sleep(5)
# 找到輸入框并輸入當前時間
vc.dump()
vc.findViewByIdOrRaise("com.tencent.mm:id/aep").setText('Now:{}'.format(time.strftime('%Y-%m-%d %H:%M:%S')))
time.sleep(3)
# 點擊發送按鈕
vc.dump()
vc.findViewWithTextOrRaise(u'發送').touch()
if __name__ == '__main__':
test()
4. 高級用法:Culebra的使用
Culebra可以幫助我們自動生成(錄制)AndroidViewClient腳本。它提供了一個GUI,當我們通過GUI上操作手機,就會自動產生AndroidViewClient控制腳本模板,我們可以再在這個模板腳本基礎上進行修改,實現更復雜的功能。Culebra的詳細說明見其主頁: https://github.com/dtmilano/AndroidViewClient/wiki/culebra
我們來做一個測試,錄制一個”點擊微信聊天文字輸入框,然后輸入一段文本test"操作的腳本: 首先啟動Culebra(culebra文件位于AndroidViewClient包的tools目錄下,我把后綴名改成.py了),命令如下:
view plain copy to clipboard print ?
python culebra.py -G --scale 0.5
如下所示為完成操作之后的Culebra的GUI截圖:
下面為Culebra自動錄制的腳本:
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'''''當前所在頁面,與家好月圓(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)
在相同窗口環境下執行該腳本就可以自動重復上述操作。
以上就是怎樣用Python實現自動化操作Android手機,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。