首先,我需要說明下,寫這篇筆記的目的不是告訴讀者如何去定位,如何使用工具去定位。
目前使用selenium對web自動化測試時完全依賴UI元素的定位,可以說元素位置的變化是牽一發(fā)而動全身,我在想有沒有一種方法能夠快速的獲取指定元素的頁面中的位置,哪怕他是最慢的xpath,這樣,如果頁面元素位置變化了,也可以很快的獲取到元素位置。
看到這里肯定有人會說,遇到元素位置變換的,在定位一次了,誠然這是目前我們能做的方式,但是假如一個位置變化,引起了其后所有元素位置的變化,難道要把后面元素都重新再獲取一遍嗎?那這個工作量是非常之大的。目前我這邊在做的一個web管理后臺就由于框架原因,會出現(xiàn)我上面所說的情況。
一、爬蟲(未實踐,一種假設(shè))
是否可以使用爬蟲去獲取給定元素的位置信息,按照id、name、link、classname、xpath的優(yōu)先級篩選,比如登錄模塊,正常的定位需要獲取以下元素的位置信息
(1).登錄按鈕,點擊跳轉(zhuǎn)登錄頁面
(2).賬號、密碼輸入框
(3).登錄按鈕,點擊登錄
(4).特定文案,檢查登錄是否成功標識
1.按照html的順序逐級往下找,應該是可以獲取到絕對xpath路徑,此時再去判斷是否有id、name等字段,如果有替換,如果無則使用xpath給點錢元素賦定位地址;
2.對于動態(tài)操作之后才能獲取的值,可以通過給頁面加載緩存數(shù)據(jù),得到已登錄狀態(tài)后的特定元素,然后使用方法1去獲取元素定位位置
二、selenium IDE
該插件能夠根據(jù)用戶的操作,獲取每個操作元素的地址、操作、輸入值,是輔助selenium定位的絕佳工具,如果可以知道其工作原理,或許可以借助該工具的實現(xiàn)方式來獲取元素位置
目前能想到的方式就這兩種,相對于第二種,第一種是可以嘗試,最起碼可以提供有限范圍的快速獲取元素方法,如果真的能實現(xiàn),對于自動化后期維護成本降低還是有幫助的,所以找時間實踐吧,可行的話再來寫