1. 程式人生 > 其它 >uiautomator2定位的xpath和Uiselector的寫法,包含正則語句的寫法

uiautomator2定位的xpath和Uiselector的寫法,包含正則語句的寫法

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比較多一些因為寫起來整潔

UiSelectorxpath備註
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可以提取包含‘分數’開始的元素。