接觸過 UI 自動(dòng)化的同學(xué)都應(yīng)該清楚,當(dāng)你要使用自動(dòng)化工具操作界面元素時(shí)磺陡,首先必須要找到這個(gè)元素兢交。在 Web UI 中,我們使用 selenium 進(jìn)行自動(dòng)化锭沟,定位方式的查看使用的是瀏覽器自帶的開發(fā)者工具抽兆。
在 App 測(cè)試中呢?如何查看頁面元素族淮?這又不像 Web 頁面辫红,有瀏覽器。就會(huì)很困惑祝辣!
App 由于沒有基于瀏覽器運(yùn)行贴妻,那就需要借助一些工具了。目前主要有兩種:
- 由 Google 提供蝙斜,在 Android SDK 環(huán)境 tools 目錄下的 UIAutomatorviewer
- 由 Appium 桌面版提供的定位工具名惩,inspector
注意,這里講的定位工具都是針對(duì)原生應(yīng)用乍炉【钇混合應(yīng)用和 web 應(yīng)用后面再專門來談。
沒有 Android SDK 的同學(xué)請(qǐng)參看《Android Appium環(huán)境搭建》
那么哪個(gè)工具好用方便呢岛琼?都難用底循! # 手動(dòng)捂臉 (*/ω\*)
但是難用歸難用,總還得用啊槐瑞。當(dāng)然還有一種套路熙涤,根據(jù)頁面上顯示的文字來定位,這個(gè)需要自己封裝方法困檩,這個(gè)后面專門講祠挫。
先講講難用的工具們吧!
UIAutomatorviewer
你可以在 Android SDK 目錄下的 tools 中找到它悼沿。
點(diǎn)開后出現(xiàn)如下界面等舔,當(dāng)你連接模擬器后,就可以點(diǎn)擊 ② 或 ③ 按鈕連接設(shè)備桌面糟趾,用來查看頁面元素栏饮。
保證設(shè)備已經(jīng)連接楼入∩驴浚可通過adb devices
查看杈曲。(不熟悉 adb 命令的話請(qǐng)先看 adb 命令介紹)
> adb devcices
List of devices attached
192.168.213.101:5555 device
在模擬器或設(shè)備上打開待測(cè)應(yīng)用,這里以墨跡天氣為例非驮,點(diǎn)擊 UIAutomatorViewer 上的 ② 按鈕交汤,連接設(shè)備,連接成功后界面如下:
- 左邊部分為當(dāng)前設(shè)備屏幕截圖劫笙,可以直接點(diǎn)擊你想查看的元素;
- 右邊部分分為上下兩部分:上半部分為元素的層級(jí)芙扎,下半部分為當(dāng)前選中元素的屬性展示星岗。
如果連接不成功,重啟一下 adb 服務(wù)纵顾。
在實(shí)際使用過程中伍茄,可以將頁面截圖保存下來,以后在寫自動(dòng)化腳本的時(shí)候施逾,不用每次都連接設(shè)備打開 App敷矫,可以直接打開保存的截圖,方便快捷汉额。
保存后有兩個(gè)文件曹仗,屏幕截圖和 xml 格式的屏幕層級(jí)關(guān)系(uix文件):
下次使用時(shí)直接打開保存的截圖就可以進(jìn)行定位了。
下面是一個(gè)大致的 Appium 和 Selenium 定位方式的區(qū)別:
定位方式 | Appium | Selenium | 說明 |
---|---|---|---|
id | resource-id | id | 唯一性較強(qiáng)的定位方式 |
class name | class | class | web 中的 class 為 css 樣式類蠕搜,而 App 中表示控件類型 |
name | name | Appium 1.5 以前 name 定位使用 text 屬性怎茫,1.8 以后取消 | |
accessibility id | content-desc | 無 | Android中獨(dú)有的定位方式 |
xpath | 使用class表示層級(jí) | 使用標(biāo)簽名表示層級(jí) | //android.widget.TextView[@resource-id="com.moji.mjweather:id/cm3"] |
css selector | 無 | css 選擇器語法 | |
UIAutomator | 使用 Android 官方測(cè)試框架 UIAutomator 定位 | 無 | Android 獨(dú)有定位方式 |
其余 selenium 中的定位方式,如 link text 等妓灌,在 Appium 中不存在轨蛤。