獲取元素定位方式婴渡,是UI自動化測試過程中最重要的一步,如果無法獲取有效的定位方式,其它操作將無從進(jìn)行才顿。
通常在使用Appium框架進(jìn)行自動化測試時,我們依賴GUI工具Appium Inspector尤蒿、UIAutomatorViewer來獲取元素屬性郑气,經(jīng)過分析驗(yàn)證,從而得到正確的定位方式腰池。
使用GUI工具獲取元素定位
美好的想法
安裝Appium環(huán)境尾组,并能正常運(yùn)行demo;
安裝appium GUI客戶端示弓;
使用Appium Inspector或者UIAutomatorViewer獲取Android版本App元素屬性讳侨;
使用Appium Inspector獲取IOS版本App 元素屬性;
分析元素屬性奏属,得到定位方式跨跨;
將定位方式添加到測試腳本,運(yùn)行測試囱皿。
如果一切順利勇婴,重復(fù)以上過程,元素定位自然不是問題嘱腥。然而耕渴,理想很豐滿,現(xiàn)實(shí)很骨感齿兔,過程往往是非常痛苦的橱脸。
痛苦的過程
(安裝過程的痛處础米,不是本文重點(diǎn),在這就不多說了)
用Appium Inspector在真機(jī)上運(yùn)行并定位元素的時候慰技,不管App有沒有安裝椭盏,都會重新安裝,而Appium安裝啟動App的過程是非常耗時的吻商;
使用Linux系統(tǒng)開發(fā)時掏颊,由于Appium Inspector無Linux版本,只能通過UIAutomatorViewer工具來獲取Android頁面元素屬性艾帐,然而乌叶,有的元素就是那么任性:期望的屬性都沒有!想通過name和id定位是行不通了柒爸。
有的元素是有text和id屬性的准浴,不過中文漢字顯示成了“?”
這樣的話捎稚,需要先解決了這個編碼問題乐横。
打開Appium Inspector,無奈報(bào)錯“Could Not Launch Appium Inspector”今野,經(jīng)過檢查葡公,app path以及關(guān)鍵參數(shù)已經(jīng)設(shè)置,還是無法打開条霜。所以想要通過Appium Inspector獲取元素屬性催什,只能上網(wǎng)搜索一番,先解決了這個問題宰睡。
在解決了Appium Inspector無法啟動問題以及UIAutomatorViewer編碼問題后蒲凶,對于既沒有name,也沒有ID屬性的元素拆内,只能通過分析旋圆,得到xpath,添加進(jìn)腳本試用麸恍,確認(rèn)定位信息是否準(zhǔn)確臂聋。而這時,就不可避免的遇到NoSuchElement錯誤或南。
如果通過分析元素屬性得到的xpath無法準(zhǔn)確定位孩等,只能采用萬能的page source方法,根據(jù)source繼續(xù)分析采够,得到定位方式肄方,再來驗(yàn)證。
@property
defpage_source(self):
"""
Gets the source of the current page.
:Usage:
driver.page_source
"""returnself.execute(Command.GET_PAGE_SOURCE)['value']
以上列舉了一些使用GUI工具Appium Inspector和UIAutomatorViewer獲取元素定位方法的一些問題蹬癌,雖說問題都能一一被解決权她,但花費(fèi)的時間以及不斷重復(fù)獲取精確定位的過程虹茶,讓人不能忍,如果有人真不幸的一一遇到了隅要,那么使用新的方法來獲取定位方式蝴罪,便迫在眉睫了。
新方法的實(shí)踐
1步清、期望的獲取方式
在App指定的界面要门,解析頁面并獲取所有元素的定位方式
對分析到的元素定位方式進(jìn)行驗(yàn)證
確認(rèn)定位信息無誤后添加進(jìn)自動化腳本中
2、解決思路
配置Desired Capabilities廓啊,并啟動Appium Server
運(yùn)行App并調(diào)整到指定界面
通過source = driver.page_source獲取頁面source
分析頁面source欢搜,得到該頁面所有元素的定位方法,可根據(jù)ID>name>text>xpath的順序
指定得到的定位元素方式谴轮,執(zhí)行click操作炒瘟,觀察交互是否正確
將正確的定位方式添加進(jìn)測試腳本
3、如何實(shí)現(xiàn)(主要代碼)
如何解析source
Android也是同樣的思路第步,直接獲取屬性clickable為True的元素疮装。
對得到的定位方式進(jìn)行驗(yàn)證
4、以demo為例說明
打開app后界面
根據(jù)分析得到的定位方式
選擇11粘都,驗(yàn)證定位信息是否正確
執(zhí)行click操作斩个,跳轉(zhuǎn)到buttons頁面,說明定位信息準(zhǔn)確驯杜,可添加進(jìn)腳本
5、該方法解決的主要問題
Appium Inspector以及UIAutimatorViewer工具做个,因環(huán)境問題帶來的困擾鸽心;
UIAutimatorViewer無法直接獲取xpath的不足;
獲取定位方式后可以直接判斷是否準(zhǔn)確居暖。
6顽频、該方法帶來的幾個主要問題以及改善
以上是通過xpath得到的定位信息,可以根據(jù)需要進(jìn)行修改太闺,建議ID優(yōu)先糯景;
對于無明顯特征的定位信息,無法判斷屬于頁面哪個元素省骂,需要根據(jù)元素類型如button或者頁面元素顯示順序蟀淮,來猜測是哪個元素。如果能與開發(fā)約定元素id钞澳,相信獲取元素定位怠惶,將事半功倍。
小結(jié)
以上主要根據(jù)使用工具獲取元素定位方式的各種痛處轧粟,探索了一種新的獲取元素定位的思路策治,希望能通過對該思路不斷的優(yōu)化脓魏、改進(jìn)和完善,解決獲取定位的煩惱通惫,從而高效的完成自動化測試工作茂翔。
本文作者:李吉兵(點(diǎn)融黑幫),現(xiàn)任點(diǎn)融網(wǎng)測試開發(fā)工程師履腋,主要從事App自動化測試珊燎,測試框架以及工具開發(fā)工作。