新的獲取APP元素定位方法的實(shí)踐——不依賴GUI工具

獲取元素定位方式婴渡,是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ā)工作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末府树,一起剝皮案震驚了整個濱河市俐末,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奄侠,老刑警劉巖卓箫,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異垄潮,居然都是意外死亡烹卒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門弯洗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旅急,“玉大人,你說我怎么就攤上這事牡整∶晁保” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵逃贝,是天一觀的道長谣辞。 經(jīng)常有香客問我,道長沐扳,這世上最難降的妖魔是什么泥从? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮沪摄,結(jié)果婚禮上躯嫉,老公的妹妹穿的比我還像新娘。我一直安慰自己杨拐,他們只是感情好祈餐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哄陶,像睡著了一般昼弟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奕筐,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天舱痘,我揣著相機(jī)與錄音变骡,去河邊找鬼。 笑死芭逝,一個胖子當(dāng)著我的面吹牛郎嫁,可吹牛的內(nèi)容都是我干的澎埠。 我是一名探鬼主播斯撮,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼沙廉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胖翰?” 一聲冷哼從身側(cè)響起接剩,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萨咳,沒想到半個月后懊缺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡培他,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年鹃两,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舀凛。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡俊扳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猛遍,到底是詐尸還是另有隱情馋记,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布懊烤,位于F島的核電站梯醒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奸晴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一日麸、第九天 我趴在偏房一處隱蔽的房頂上張望寄啼。 院中可真熱鬧,春花似錦代箭、人聲如沸墩划。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乙帮。三九已至,卻和暖如春极景,著一層夾襖步出監(jiān)牢的瞬間察净,已是汗流浹背驾茴。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留氢卡,地道東北人锈至。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像译秦,于是被迫代替她去往敵國和親峡捡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Appium和它的設(shè)計(jì)思想 什么是Appium? 1筑悴、appium是開源的移動端自動化測試框架们拙; 2、appium...
    RmondJone閱讀 4,457評論 2 7
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評論 25 707
  • 前言:本篇文章并非我的原創(chuàng)阁吝,而是翻譯自英文原著砚婆。這里的每一句話我都仔細(xì)揣摩過并且加以實(shí)踐,著實(shí)花了一些時間求摇,在此記...
    顧顧314閱讀 21,985評論 0 19
  • 如約地開啟了九月的光陰故事射沟,我們昂揚(yáng)奮進(jìn)地重返校園,書寫奮進(jìn)路上又一段成長卷軸与境!九月一日验夯,我們多數(shù)人守候在電視機(jī)前...
    嫣容淺笑閱讀 371評論 1 4
  • 標(biāo)簽的屬性 html 代碼: //audio和video都可以通過JS獲取對象,JS通過id獲取video和aud...
    vikang閱讀 3,193評論 0 2