App元素定位失敗了,怎麼辦?
學員們在日常的android app自動化測試工作當中,元素定位時會遇到以下類似的報錯:
然後來問老師,這是啥情況?
老師一般都會送上親切的關懷:
1)adb能識別到裝置嗎?
2)裝置有被其它的程式在佔用嗎?
3)ADT的版本正確嗎?
當學生對以上關懷都確認之後,反饋仍然會遇到這樣的報錯。
那麼老師為了不影響學習的熱情,會提供以下三種定位小手段,總有一款可以讓你順利的定位到元素哦!!
每一種工具定位的前提:
1、通過 adb devices命令能夠識別到至少一個android裝置;
2、裝置當前沒有被任何其它的應用程式所佔用;
1、Android ADT自帶工具:
uiAutormatorViewer
文章最開始的報錯截圖,就是來自於這個工具啦。
android 4.2以上的版本,自帶的自動化測試框架是uiAutomator。
uiAutomatorViewer就是它的元素定位工具了。
如果要用UiAutomator來做自動化測試,就需要掌握java語言了。 安裝:
uiAutomatorViewer是安卓除錯工具(ADT)中的一部分。所以只需要安裝ADT就可以了(不需要安裝SDK哦)。
1) 安裝Android Studio
2)在Android Studio的啟動頁面當中,選擇右下角的Configure -> SDK Manager
會彈出下圖:選擇Android SDK -> SDK Tools ,按圖中勾選,點選OK進入安裝,安裝完成即可關閉Android Studio。
記住圖中Android SDK Location對應的路徑。
使用:
1)找到ADT安裝目錄,在其tools/bin目錄下,找到uiAutomatorViewer程式,雙擊開啟。
例如:ADT的目錄為:
/Users/liyuan/Library/Android/sdk
(Ps: 親測目前不支援jdk1.8以上的版本。所以為了啟動成功,要安裝jdk1.8的版本。
mac下若安裝了jdk11和jdk1.8,需要編輯uiautomatorviewer檔案,找到javaCmd="java"。
修改為
javaCmd="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java"
/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java為jdk1.8版本對應的java.)
2)定位元素。
2、appium的appium inspector
appium是目前最流行的開源的app功能測試框架。
同時支援IOS和Android的自動化測試,也支援多語言(python/java/C#......)
安裝:
只要安裝appium,那麼appium inspector也就有了。
appium desktop下載地址:http://appium.io/
(Ps:需要先安裝nodejs,再安裝appium程式哦。)
使用:
2)在開啟如下介面當中,按圖中所示,填寫資訊:
3)會根據啟動引數,去開啟對應的app,然後會擷取app當中的頁面。
3、Python版uiAutomator2中的weditorpython語言實現的一個app自動化測試框架。安裝:
安裝uiAutomator2:pip install -U uiautomator2
安裝定位工具weditor: pip install -U weditor
安裝完成之後:命令列執行:weditor --help確認是否安裝成功。
使用:
1) 命令列輸入:weditor 會自動開啟在瀏覽器當中開啟一個2) 所示的頁面。
!
延伸:
github地址:
https://github.com/openatx/uiautomator2
檸檬班-論壇文章地址:
http://www.lemfix.com/topics/346
4、總結
以上3種定位告訴你: 任何一個app自動化測試的框架,都會給你提供一個對應的定位工具哦!
android自帶的UiAutomator測試框架,提供 uiAutomatorViewer。
appium測試框架,提供appium inspector.
python實現的uiAutomator2測試框架,提供weditor
在app自動化測試的過程中,可以使用任意一種來幫你進行元素定位。