Appium元素定位方式之a(chǎn)ndroid_uiautomator定位
1. android_uiautomator定位
相當(dāng)于使用 UiAutomator Api 去遞歸地搜索元素(Android 專(zhuān)屬),可以說(shuō)android uiautomator是終極定位方式,有的時(shí)候一些元素不能夠很好的定位時(shí),那么就需要采用android uiautomator去定位,他是一種非常強(qiáng)有力的定位方式,原理是通過(guò)android 自帶的android uiautomator的類(lèi)庫(kù)去查找元素。appium對(duì)android 的uiautomator進(jìn)行了封裝,該方法的參數(shù)為UiSelector類(lèi)定位元素的表達(dá)式:new UiSelector().屬性('屬性值'),實(shí)例化一個(gè)UiSelector對(duì)象,然后通過(guò)實(shí)例接口調(diào)用。
AndroidUIAutomator是一個(gè)強(qiáng)有力的元素定位方式,它是通過(guò)Android UIAutomator類(lèi)庫(kù)去找元素,可以選擇resourceId、text、className、description作為傳入的字符串。
1.1 android_uiautomator之text文本定位語(yǔ)法
1) 使用text文本定義
loc_text = 'new UiSelector().text("登錄/注冊(cè)")'
driver.find_element_by_android_uiautomator(loc_text).click()
2) uiautomator text模糊定位
文本比較長(zhǎng)的時(shí)候,可以用textContains模糊匹配,通過(guò)text的部分信息就能夠進(jìn)行定位,我們直接看代碼:
loc_text = 'new UiSelector().textContains("登錄/注冊(cè)")'
driver.find_element_by_android_uiautomator(loc_text).click()
在上面的代碼中我們只是將.text()的方法變成了.textContains(),在方法中傳入模糊的數(shù)據(jù)就好。看到這里是否有人思考過(guò)一個(gè)問(wèn)題,既然有類(lèi)似的模糊尋找,那么有沒(méi)有像正則表達(dá)式一樣的查找呢?答案是肯定的,看我們下面的方法。
3) textMatches 正則匹配查找
textMatches故名思義就是通過(guò)正則的來(lái)進(jìn)行查找定位,也是通過(guò)text的屬性來(lái)進(jìn)行正則匹配,我們直接看代碼:
loc_text = 'new UiSelector().textMatches("^登錄/.*")'
driver.find_element_by_android_uiautomator(loc_text).click()
4) textStartsWith是以某個(gè)文本開(kāi)頭來(lái)匹配
new UiSelector().textStartsWith("以text文本開(kāi)頭")
loc_text = 'new UiSelector().textStartsWith("登錄")'
driver.find_element_by_android_uiautomator(loc_text).click()
1.2 android_uiautomator之resourceId定位
resourceId定位和appium封裝好的id定位是一樣的,只是這里將寫(xiě)法變成了uiautomator的寫(xiě)法而已。
1) resourceId定位
oc_id = 'new UiSelector().resourceId(" com.wm.dmall:id/net_image_view ")'
driver.find_element_by_android_uiautomator(loc_id).click()
通過(guò)上面的代碼和之前的代碼對(duì)比大家可能發(fā)現(xiàn)其實(shí)他們前面都是一樣的,只是在定位的時(shí)候發(fā)生了一些變化,text變換成了resourceId即可,也就是頁(yè)面對(duì)象屬性的信息進(jìn)行變更了,其他方法都是一樣。
2) resourceIDMatches 定位
通過(guò)id進(jìn)行正則匹配定位
loc_id = 'new UiSelector().resourceIdMatches(".+net_image_view ")'
driver.find_element_by_android_uiautomator(loc_id).click()
1.3 android_uiautomator之className定位
頁(yè)面上的class屬性一般不唯一,多半用在復(fù)數(shù)定位時(shí)候。比如通過(guò)class屬性定位'同意'這個(gè)按鈕下標(biāo)就是1。
1) className定位
# className復(fù)數(shù)定位
loc_class = 'new UiSelector().className("android.widget.TextView")'
driver.find_elements_by_android_uiautomator(loc_class)[1].click()
20 uiautomator classNameMatches定位
通過(guò)className正則匹配進(jìn)行定位:
loc_class = 'new UiSelector().classNameMatches (".*widget.TextView")'
driver.find_elements_by_android_uiautomator(loc_class)[1].click()
1.4 android_uiautomator之description定位
loc_id = 'new UiSelector().
description("多點(diǎn)")'
driver.find_element_by_android_uiautomator(loc_id).click()
1.5 android_uiautomator之組合定位
1)id與text屬性組合
id_text = 'resourceId("com.wm.dmall:id/funcTitle").text("待支付")'
driver.find_element_by_android_uiautomator(id_text).click()
2)class與text屬性組合
class_text = 'className("android.widget.TextView").text("待支付")'
driver.find_element_by_android_uiautomator(class_text).click()
3)父子關(guān)系定位
son = 'resourceId("com.wm.dmall:id/container").childSelector(text("我的"))'
driver.find_element_by_android_uiautomator(son).click()
4)兄弟定位fromParent
有時(shí)候父元素不好定位,但是跟他相鄰的兄弟元素很好定位,這時(shí)候就可以通過(guò)兄弟元素,找到同一父級(jí)元素下的子元素。
brother = 'resourceId("com.wm.dmall:id/nav_item_laber_tv").fromParent(text("我的"))'
driver.find_element_by_android_uiautomator(brother).click()
信息來(lái)源網(wǎng)址:https://www.cnblogs.com/dy99/p/14287543.html
- 相關(guān)閱讀
- 旅行社網(wǎng)站模板9
- CSS編寫(xiě)中靈活運(yùn)行注釋的意義
- 微信公眾號(hào)用客服接口推送菜單消息
- 跳轉(zhuǎn)菜單,跳轉(zhuǎn)后用新窗口打開(kāi)
- div+css中absolute標(biāo)簽與relative標(biāo)簽的巧妙運(yùn)用
- ASP把數(shù)字用逗號(hào)每3位隔開(kāi)顯示代碼
- ASP.NET AJAX的應(yīng)用
- 連云港五洲旅行社有限公司
- 共有0條關(guān)于《Appium元素定位方式之a(chǎn)ndroid_uiautomator定位》的評(píng)論
- 發(fā)表評(píng)論
您發(fā)布的評(píng)論即表示同意遵守以下條款:
一、不得利用本站危害國(guó)家安全、泄露國(guó)家秘密,不得侵犯國(guó)家、社會(huì)、集體和公民的合法權(quán)益;
二、不得發(fā)布國(guó)家法律、法規(guī)明令禁止的內(nèi)容;互相尊重,對(duì)自己在本站的言論和行為負(fù)責(zé);
三、本站對(duì)您所發(fā)布內(nèi)容擁有處置權(quán)。
- 更多信息>>欄目類(lèi)別選擇
- 百度小程序開(kāi)發(fā)
- 微信小程序開(kāi)發(fā)
- 微信公眾號(hào)開(kāi)發(fā)
- uni-app
- asp函數(shù)庫(kù)
- ASP
- DIV+CSS
- HTML
- python
- 更多>>同類(lèi)信息
- Android移動(dòng)端自動(dòng)化測(cè)試:使用UIAutomatorViewer與Selenium定位元素
- python通過(guò)代碼修改pip下載源讓下載庫(kù)飛起
- python里面requests.post返回的res.text還有其它的嗎
- windows7環(huán)境下安裝配置jdk
- python對(duì)微信操作要用到這兩個(gè)庫(kù)wxpy與itchat
- 8種Python字符串拼接的方法,你知道幾種
- 更多>>最新添加文章
- dw里面查找替換使用正則刪除sqlserver里面的CONSTRAINT
- Android移動(dòng)端自動(dòng)化測(cè)試:使用UIAutomatorViewer與Selenium定位元素
- 抖音直播音掛載小雪花 懂車(chē)帝小程序
- javascript獲取瀏覽器指紋可以用來(lái)做投票
- 火狐Mozilla Firefox出現(xiàn):無(wú)法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無(wú)法訪問(wèn) 問(wèn)題解決集合處理辦法
- 在Android、iOS、Windows、MacOS中微信小程序的文件存放路徑
- python通過(guò)代碼修改pip下載源讓下載庫(kù)飛起
- python里面requests.post返回的res.text還有其它的嗎
- 更多>>隨機(jī)抽取信息
- 華東賓館
- 絕對(duì)讓你長(zhǎng)見(jiàn)識(shí):200個(gè)騙人的創(chuàng)業(yè)項(xiàng)目!
- 專(zhuān)業(yè)地接服務(wù)的旅行社建站解決方案
- asp iis 開(kāi)啟本地FSO權(quán)限
- CSS光標(biāo)屬性一覽表
- asp中eof的介紹