1.問題描述
在使用Uiautomatorviewer 進行元素定位時,點擊 快照 按鈕出現以下錯誤:
2.發生原因
Unexpected error while obtaining UI hierarchy(獲取UI層次結構時發生意外錯誤)。
發生這個錯誤一般是由這兩種情況導致的:
1.jdk版本問題 (1.9的jdk是不兼容uiautomatorviewer的,1.8的支持,再向下是否兼容本人不太清楚,可自行嘗試)
2.android版本問題
我這裏發生這個報錯就是因爲這個原因:
我使用的是android 9.0的設備,而uiautomatorviewer.bat不支持對9.0系統直接截屏(好像對8.0以後的android系統都不支持直接截屏)
3.解決方案
雖然不能直接進行截屏,但是我們可以間接來截屏:
即:用Uiautomatorviewer去讀取已經準備好的截圖文件,從而進行元素定位
具體辦法如下:
1.操作你的待測設備到你需要截圖的界面
2.點擊Uiautomatorviewer的圖標,可以看到Open UI dump Files需要兩個文件:
Screenshot和UI XML Dump,開始準備需要的文件
確保你的pc已經安裝adb工具,然後打開命令行工具,在Dos窗口中輸入以下指令:
獲取UI XML Dump的指令:
adb shell uiautomator dump /sdcard/sc.uix(將uix文件轉儲到手機上,位置自己指定)
adb pull /sdcard/sc.uix e:/
獲取Screenshot的指令:
adb shell screencap -p /sdcard/sc.png((將獲取的截圖文件轉儲到手機上,位置自己指定))
adb pull /sdcard/sc.png e:/
具體看圖:
3.加載截圖文件
4.點擊ok後,則可以正常加載文件