uiautomator2定位的xpath和Uiselector的寫法,包含正則語句的寫法
阿新 • • 發佈:2021-06-20
uiautomator2在github上有快速開始指南推薦搭配web-editor快速抓取控制元件資訊
還是很好懂的,抽出幾分鐘看一遍基本就可以寫東西了,比如簡單的
d.click(x,y) # 點選座標
d.xpath(xp).click() # 點選控制元件
d.xpath(xp).wait(timeout=3) # 等待控制元件
d.press('back') # 按鍵/返回
至於xpath的寫法,最常用的大概是這句了xp = "//*[re:match(@text, '^正則語句')]"
,用正則匹配查詢對應文字的控制元件。
除了xpath還支援Uiselector的寫法, 二者稍有不同, 以下是我對比測試兩種寫法的對比作為參考, 實際寫的時候我還是用Uiselector比較多一些因為寫起來整潔
UiSelector | xpath | 備註 |
---|---|---|
d(text='立即開戶') 或d(description='立即開戶') |
d.xpath("立即開戶") |
text或description等於立即開戶的元素 |
d(textMatches='正則語句') |
d.xpath("//*[re:match(@text, '^正則語句')]") |
正則 |
d(text='文字') |
d.xpath('//*[@text="文字"]') |
text |
d(description='文字') |
d.xpath('//*[@content-desc="文字"]') |
description |
d(resourceId='文字') |
d.xpath('//*[@resource-id="文字"]') |
resourceId |
d(text='') |
d.xpath('//*[@text=""]').all() |
如果存在多個, xpath需要通過all()返回列表,列表為空返回[] |
d(text='').info |
d.xpath('//*[@text=""]').info |
獲取info |
d(text='').bounds() |
d.xpath('//*[@text=""]').bounds |
獲取bounds |
有了通過文字正則查詢控制元件、獲取文字、點選、返回等等,剩下的就是將這些動作組合迴圈,實現規律性抓取了,具體怎麼寫結合需要自行組合實現。
轉載摘錄之https://blog.csdn.net/watfe/article/details/104885546,以上給我啟發很大,特別是可以定位正則語句,在uiautomator2原開發者文件是沒有體現到的。
比如用d(textMatches='分數.+').info可以提取包含‘分數’開始的元素。