android appium微信等自動(dòng)化的那些坑兒

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)方法:

1.在appium安裝目錄中搜索android.hybrid.js,打開后修改其代碼為這樣
1.png

該段代碼的作用原本是如果存在舊的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ú)法解決,求助

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 最近受有人委托,想搞個(gè)自動(dòng)化腳本,基于微信公眾號(hào)的!聽到這個(gè)請(qǐng)求的時(shí)候第一反應(yīng)是這簡(jiǎn)單呀,用Appium就可以實(shí)現(xiàn)...
    茜茜爸爸閱讀 3,867評(píng)論 1 9
  • 首先進(jìn)行微信的設(shè)置 用微信打開debugx5.qq.com, 這是個(gè)微信的x5內(nèi)核調(diào)試頁(yè)面. 你可以在任何聊天窗口...
    longlong1閱讀 2,861評(píng)論 0 2
  • Docker國(guó)內(nèi)鏡像DaoCloud - Docker加速器阿里云 - 開發(fā)者平臺(tái)微鏡像 - 希云cSphere鏡...
    山哥Samuel閱讀 2,267評(píng)論 0 0
  • 昨天一天從早上六點(diǎn)起床,被伯伯開車來(lái)到福州省立醫(yī)院這里檢查左膝,福州的的確確挺繁華的,高樓林立,人群來(lái)往如梭,記下...
    吾道唯孤閱讀 133評(píng)論 0 0

友情鏈接更多精彩內(nèi)容