1.下載appium自動(dòng)化安裝環(huán)境:
appium客戶端
python語(yǔ)言支持
android studio(包含android sdk和adb)
java開發(fā)環(huán)境
2.微信x5內(nèi)核調(diào)試(網(wǎng)上有詳細(xì)配置)
打開微信,在聊天中輸入debugx5.qq.com,點(diǎn)擊進(jìn)入x5調(diào)試頁(yè)面,
點(diǎn)擊信息,打開‘是否打開TBS內(nèi)核Inspector調(diào)試功能’即可
3.id變化
微信中控件有的是持續(xù)變化的,在不同的手機(jī)上id可能不相同,
所以最好不使用id的形式抓去控件。(app原生界面可以采用android
studio自帶的UiAutomator查看)
4.切換webview和native界面
微信中你要隨時(shí)切換webview的context,在webview界面進(jìn)行操作,需要切換到
微信‘WEBVIEW_com.tencent.mm:tools’,使用完成后,在切換回‘NATIVE_APP’,還要在程序中加入下列代碼
desired_caps['chromeOptions'] = {'androidProcess': 'com.tencent.mm:tools'} # 驅(qū)動(dòng)H5自動(dòng)化關(guān)鍵之一
5.獲取webview控件
在微信中通常會(huì)切換到其webview界面,開啟第二步后,可以通過(guò)
chrome://inspect/#devices獲取webview的控件。
6.在切換context過(guò)程中會(huì)牽扯到appium中chromedriver,這是appium中最麻煩的地方,
經(jīng)常會(huì)在這里出錯(cuò)。
(1)切換進(jìn)微信webview頁(yè)面,操作完成后,進(jìn)入第二個(gè)webview頁(yè)面,但是不能操作第二個(gè)頁(yè)面,
這是因?yàn)榈谝粋€(gè)chromedriver沒有正常關(guān)閉,有兩種該進(jìn)方法:

該段代碼的作用原本是如果存在舊的chromedriver就會(huì)使用舊的,不會(huì)新建一個(gè)chromedriver。
修改后,代碼就變成每次都會(huì)重新生成一個(gè)新的chromedriver進(jìn)程。
2.在上述1步驟操作完成后,還是不成功,需要在切換到weview界面操作完成返回native界面時(shí),手動(dòng)殺掉chromedriver進(jìn)程
os.system('taskkill /im chromedriver.exe')
7.android 高版本appiu支持
高版本自動(dòng)化需要appium 1.6.3及以上版本的支持,appium高版本并不是那么好下載,在網(wǎng)上試了很多種那個(gè)方法都不行,最后這種成功了,分享下我的經(jīng)驗(yàn):
npm config set registry http://registry.npm.taobao.org
npm install -g appium
下載完成后需要修改程序:
desired_caps['platformVersion'] = '7.0'
# desired_caps['automationName'] = 'UIAutomator2' 網(wǎng)上說(shuō)需要切換,但是我下載的是1.7.2版本,使用了反而用不了了。
運(yùn)行后出現(xiàn)\appium\node_modules\appium-uiautomator2-driver 的文件夾uiautomator2下面沒有 2個(gè)必要的安卓apk文件:
在appium的安裝目錄下去安裝這兩個(gè)東西,命令如下:
npm install appium-uiautomator2-driver
運(yùn)行成功,需要注意的是5037端口不能被占用。
8.appium運(yùn)行超時(shí)時(shí)間設(shè)置
appium的運(yùn)行超時(shí)時(shí)間是60s,60s無(wú)命令進(jìn)入就會(huì)關(guān)閉程序,如果需要的等待時(shí)間超過(guò)60s,就要對(duì)appium進(jìn)行設(shè)置,代碼如下:
#設(shè)置超時(shí)時(shí)間
desired_caps['newCommandTimeout'] = '61'
.有些app進(jìn)行自動(dòng)化的時(shí)候無(wú)法獲取webview的控件元素,使用chrome://inspect/#devices命令讀取不到其webview界面,打印contexts也只有一個(gè)NATIVE_APP,解決方法如下:
下載TBS studio,運(yùn)行程序,手機(jī)切換到要讀取的app界面,點(diǎn)擊調(diào)試,啟動(dòng)tbs調(diào)試,就完成了
9.獲取手機(jī)輸入法
adb shell ime list -s
9.webview問題求助
在抓取webview的過(guò)程中,跳轉(zhuǎn)到一些webview深層次界面后,chrome顯示的界面是黑色,沒有控件顯示,只顯示框的大小,這個(gè)問題無(wú)法解決,求助