為了更方便地進(jìn)行微信小程序的測(cè)試渣触,筆者希望能夠切換進(jìn)webview進(jìn)行操作浇雹,事件過(guò)程中問(wèn)題特別多一踩一個(gè)坑,特此記錄以方便大家共同進(jìn)步
1)Android版本8.0以上機(jī)型get contexts得到webview_undefinded
打開(kāi)D:\appium\node_modules\appium-android-driver\build\lib\webview-helpers.js
修改adb.shell('ps')為adb.shell(['ps','-A'])硅堆,8.0以下不需要修改
如果使用的是desktop屿储,那文件在C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib文件夾下
修改之后成功獲取到
2)switch_context到WEBVIEW_com.tencent.mm:tools卡住
解決方法:Step1:添加啟動(dòng)參數(shù),${chromeOptions} = {'androidProcess': 'com.tencent.mm:tools'}
? ? ? ? ? ? ? ? ? Step2:降低微信版本到6.7.3渐逃,后來(lái)升上去又沒(méi)問(wèn)題了够掠,具體原因不清楚
做了兩項(xiàng)修改之后切換成功
然而自動(dòng)化之路并未成功,筆者又踩了一個(gè)坑茄菊,真的是崩潰啊~~~疯潭,下面講第三個(gè)坑
3)click element提示無(wú)法定位到元素,可是元素就在那里~
使用log_source打印出當(dāng)前頁(yè)面代碼之后买羞,確實(shí)不是顯示的這個(gè)頁(yè)面
解決辦法:switch_context之后需要再切換window_handles袁勺,使用robotframework的同學(xué)將
_applicationmanagement.py里面switch_to_context的代碼修改如下,切換萬(wàn)context之后選中最后
一個(gè)handle畜普。同程旅游APP還在使用X5內(nèi)核時(shí)與此恰好相反期丰,需要選擇第一個(gè)handle,所以不同
APP可能有所不同吃挑,讀者自行排查
修改之后重新啟動(dòng)robotframework钝荡,再次運(yùn)行
查看頁(yè)面代碼,發(fā)現(xiàn)頁(yè)面已經(jīng)切換正確舶衬,click_element執(zhí)行成功
4)然而click_element執(zhí)行成功但是click時(shí)間并未生效
嘗試使用executescript解決問(wèn)題埠通,結(jié)果提示$ is not defined,與chrome內(nèi)核不同webview有可能executescript并能不支持執(zhí)行JS逛犹。
推測(cè)該元素可能綁定的時(shí)Tap事件端辱,使用Tap進(jìn)行操作梁剔。
結(jié)果報(bào)錯(cuò):NoSuchElementException: Message: An element could not be located on the page using the given search parameters
解決方案參照下面連接:
https://www.cnblogs.com/LY-CC/articles/10924469.html
最后換了一種寫(xiě)法,點(diǎn)擊成功舞蔽,具體原因完全不知道
5)與Chome內(nèi)核不同荣病,在webview中截圖,就是會(huì)卡死的
解決方案:切換為原生狀態(tài)進(jìn)行截圖渗柿,截圖成功之后再切回響應(yīng)webview
修改Rotbotframework的_screenshot.py文件中capture_page_screenshot方法
修改成功之后个盆,利用原生狀態(tài)切圖成功
6)switch-contexe時(shí)切到了Chrome上去了,因?yàn)榘惭b了chrome朵栖,程序檢測(cè)到com.android.chrome會(huì)優(yōu)先獲取chrome的版本,卸載Chrome即可
7)起初執(zhí)行沒(méi)問(wèn)題颊亮,升級(jí)微信之后無(wú)法點(diǎn)擊元素
不同版本微信元素id不一樣
例如微信的搜索框
6.7.3版本中 id=com.tencent.mm:id/ji
7.0.6中id=com.tencent.mm:id/li