作者:鄒德龍
編稿:莊錦弟
前言:
要做好UI自動(dòng)化測(cè)試,做好元素定位很重要捐川,也經(jīng)常收到反饋說定位難室谚,但是有些東西是可以提煉出來共同點(diǎn)的。接下來簡(jiǎn)單看看android和ios可以分別怎么定位杀捻,以及實(shí)踐UI自動(dòng)化以來提煉的思想:
一、Android定位
前置: adb命令蚓庭、python3致讥、可開啟開發(fā)者選項(xiàng)的安卓手機(jī)
工具: WEditor(支持windows/Mac雙平臺(tái))
安裝: 安裝weditor,在終端中輸入
pip install weditor
元素定位開始:
1器赞、手機(jī)連接安卓設(shè)備(安卓設(shè)備得開啟USB調(diào)試)垢袱,部分手機(jī)得啟用視圖屬性檢查功能。
2港柜、通過adb devices
獲取到機(jī)器的設(shè)備號(hào)
3请契、啟動(dòng)weditor咳榜,執(zhí)行
python -m weditor
4、啟動(dòng)成功后頁面
1)選擇android
2)輸入adb devices
獲取的設(shè)備號(hào)
3)點(diǎn)擊connect
按鈕可鏈接設(shè)備爽锥,這時(shí)候設(shè)備會(huì)彈出軟件安裝申請(qǐng)涌韩,選擇安裝選項(xiàng)
5、打開想要抓取元素的APP的頁面氯夷,點(diǎn)擊 Dump Hierarchy
按鈕刷新頁面臣樱,抓取頁面元素,若想切換別的頁面抓取腮考,操作APP后點(diǎn)擊刷新按鈕即可雇毫。
報(bào)錯(cuò)解決:
1、如果啟動(dòng)報(bào)錯(cuò):atx-agent recover failed
pip install --upgrade --pre uiautomator2
二踩蔚、IOS定位
前置: python3棚放、裝有WDA的Iphone手機(jī)
工具: tidevice 、appium 1.21.0
安裝:
1馅闽、安裝tidevice席吴,在終端中輸入
pip install tidevice
2、appium 官網(wǎng)下載安裝即可(裝最新版本)
元素定位開始:
1捞蛋、tidevice applist
查看安裝應(yīng)用程序同時(shí)查看設(shè)備上的第三方應(yīng)用包名孝冒,若提示信任彈窗,點(diǎn)擊信任
2拟杉、連接iOS設(shè)備庄涡,查看連接設(shè)備命令,查看設(shè)備UDID:
tidevice list
采坑點(diǎn):可能碰到驅(qū)動(dòng)問題點(diǎn)電腦無法正常連接手機(jī)設(shè)備搬设,可下載愛思助手工具自動(dòng)修復(fù)驅(qū)動(dòng)
3穴店、啟動(dòng)WDA
tidevice -u 設(shè)備UDID wdaproxy -B WDA包名 -p 8200
設(shè)備UDID :注意替換為自己設(shè)備UDID(例如:0000xxxxxxx ) WDA包名:替換wda為自己的包名(例如:xxxx.xctrunner) 啟動(dòng)成功:
4、打開appium拿穴,注意為1.20.2版本及以上泣洞,啟動(dòng)服務(wù)器
5、開始元素定位
1)打開appium啟動(dòng)服務(wù)默色,點(diǎn)擊File - New Session Windows
- 輸入JSON Reoresentation
參數(shù) - 啟動(dòng)會(huì)話
JSON Reoresentation
示例:
{ "deviceName": "xxxx", # 通用 - 關(guān)于手機(jī) - 名稱 "bundleId": "xxxxx", # 應(yīng)用包名 "platformversion": "14.4", # 手機(jī)版本 "udid": "000080xxxxxxxxxxxE", # UDID "webDriverAgentUrl": "http://localhost:8200", "platformName": "IOS", "xcodeOrgId": "xxxxxx", # xcodeOrgId "automationName": "XCUITest", "usePrebuiltWDA": true, "useXctestrunFile": false, "skipLogCapture": true}
2)啟動(dòng)成功后即可開始抓取元素
三球凰、提煉思想
大道至簡(jiǎn):用簡(jiǎn)單好用高效的元素定位:
Android :id > text > img > ocr > xpath
IOS : name > text > img > ocr > xpath
Web/H5:name > id > text > selector
網(wǎng)絡(luò)延遲:finds 框架方法(查找元素設(shè)置超時(shí)時(shí)間,間隔性掃描元素若元素存在則執(zhí)行下一步腿宰,若超過指定時(shí)長(zhǎng)未查找到元素則為失敗呕诉,推薦使用),element_is_existed
框架方法(設(shè)置元素最長(zhǎng)尋找時(shí)間吃度,找到元素則返回True
甩挫,未找到元素則返回False
)
模糊匹配:不要在一棵樹上吊死,模糊匹配椿每,不同版本中text
元素(例如原價(jià)伊者、秒殺價(jià)等)可能只有部分文案變化部分文案固定不變英遭,可用模糊匹配命中。
總結(jié):
- 元素定位是UI自動(dòng)化的基礎(chǔ)能力亦渗,先有元素后有操作挖诸。
- 元素定位方式的選擇決定了Case的執(zhí)行效率和穩(wěn)定性, 也決定了哪些功能可以通過UI自動(dòng)化實(shí)現(xiàn)覆蓋。
- WEditor央碟、Appium inspector 等只是獲取定位方式的工具税灌。
- 如果你想要做好元素定位,推薦大家多多學(xué)習(xí)各種控件的特性亿虽、實(shí)現(xiàn)方式 和 頁面布局思想~