uiautomator2中使用xpath元素定位

xpath接口官方文档:https://github.com/openatx/uiautomator2/blob/master/XPATH_CN.md
xpath,是一种用于在XML文档中定位和选择节点的查询语言‌,最初设计用于XML文档的信息提取,后扩展至HTML处理,广泛应用于数据提取、自动化测试(如Selenium)和XML相关技术(如XSLT、XQuery)中
一、可以定位的元素:
1、text
import uiautomator2 as u2

d = u2.connect()

get_element = d.xpath("//*[@package = '应用包名']//*[@text = '定位文本']")
2、package
get_element = d.xpath("//*[@package = '应用包名']")
3、resourceid
get_element = d.xpath("//*[@resourceid = 'resourceid']")
4、class
get_element = d.xpath("android.widget.TextView")
等价于 d.xpath('//*[@class="android.widget.TextView"]')
二、定位方法
规则1

// 开头代表原生xpath

规则2

@ 开头代表resourceId定位

@smartisanos:id/right_container 相当于 //*[@resource-id="smartisanos:id/right_container"]

规则3

^开头代表正则表达式

^.*道了 相当于 //*[re:match(text(), '^.*道了')]

规则4

灵感来自SQL like

知道% 匹配知道开始的文本, 相当于 //*[starts-with(text(), '知道')]

%知道 匹配知道结束的文本,相当于 //*[ends-with(text(), '知道')]

%知道% 匹配包含知道的文本,相当于 //*[contains(text(), '知道')]
三、常用方法:

1. swipe(start_x, start_y, end_x, end_y, duration=0)
作用:在屏幕上执行滑动操作。
start_x/y:滑动起点坐标。
end_x/y:滑动终点坐标。
duration(可选):滑动持续时间(毫秒)。


2. click()
作用:点击当前元素(需先定位到目标元素)。
等价于模拟用户点击元素的中心位置。


3. watch_background()
作用:开启后台监控模式(通常用于监控弹窗、Toast 等临时元素)。
开启后,框架会在后台自动检查指定的监控条件,无需主动轮询。


4. screenshot(path=None)
作用:截取当前屏幕截图。
path(可选):保存截图的文件路径,若未指定则返回图片二进制数据。


5. center()
作用:获取当前元素的中心点坐标(返回 (x, y) 元组)。
用于计算元素在屏幕中的位置。


6. offset(offset_x, offset_y)
作用:获取元素相对于父容器的偏移量(offset_x, offset_y)。
用于定位元素在父布局中的相对位置。


7. get(attribute)
作用:获取元素的指定属性值(如 resourceId, className, text 等)。
例:element.get("text") 获取元素文本。


8. get_text()
作用:快捷获取元素的文本内容(等价于 get("text"))。


9. wait(timeout=5.0)
作用:等待元素出现(显式等待)。
timeout:最长等待时间(秒),超时则抛出异常。


10. wait_gone(timeout=5.0)
作用:等待元素消失(显式等待)。
常用于判断加载状态或弹窗关闭。


11. parent()
作用:获取当前元素的父元素(用于层级定位)。
可链式调用,如 element.parent().parent() 向上遍历多层父节点。


12. child(**kwargs)
作用:获取当前元素的子元素(通过属性过滤)。
例:element.child(className="android.widget.TextView") 查找子 TextView。


13. sleep_watch(timeout=5.0)
作用:等待后台监控结束(配合 watch_background() 使用)。
阻塞当前线程,直到监控条件触发或超时。


14. get_page_source()
作用:获取当前页面的 XML 布局源代码(用于调试或元素分析)。
等价于 uiautomator2 中的 dump_hierarchy()。


15. scroll_to(text=None, resourceId=None, className=None, **kwargs)
作用:滚动页面直到找到目标元素。
支持通过 text、resourceId、className 等属性指定目标,常用于列表滑动。


 
posted @ 2025-06-13 18:24  没醉  阅读(971)  评论(0)    收藏  举报