uiautomator2中使用xpath元素定位
xpath,是一种用于在XML文档中定位和选择节点的查询语言,最初设计用于XML文档的信息提取,后扩展至HTML处理,广泛应用于数据提取、自动化测试(如Selenium)和XML相关技术(如XSLT、XQuery)中
一、可以定位的元素:
1、text
import uiautomator2 as u2
d = u2.connect()
get_element = d.xpath("//*[@package = '应用包名']//*[@text = '定位文本']")
get_element = d.xpath("//*[@package = '应用包名']")
get_element = d.xpath("//*[@resourceid = 'resourceid']")
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 等属性指定目标,常用于列表滑动。

浙公网安备 33010602011771号