韩师傅就是我

测试开发工程师

大模型(LLM)驱动的APP自动化时代,使用xpath定位页面元素恐成为历史

Midscene.js,是一款大语言模型(LLM)驱动的安卓APP自动化测试工具,它支持通过自然语言来控制手机。并宣称

AI 驱动的 Android 自动化时代已经到来!

什么是XPath

XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的查询语言(于1999年作为W3C标准推出XPath 1.0)。

  • 所以,xpath 是一种语言,它可以用来查询 XML 中元素。
  • 举个例子,假设有一个XML文档如下:
<bookstore>
    <book>
        <title>XML入门</title>
        <author>张三</author>
        <price>45</price>
    </book>
    <book>
        <title>JavaScript指南</title>
        <author>李四</author>
        <price>60</price>
    </book>
</bookstore>

使用XPath表达式//book/title,可以提取所有book元素下的title元素,结果为:

<title>XML入门</title>

<title>JavaScript指南</title>

前AI时代通过Xpath去访问页面元素

step1. 用adb 命令获得被测试页面的ui布局(一个xml文件)

# 1. 生成XML布局文件(默认保存到设备/sdcard/ui.xml)
adb shell uiautomator dump /sdcard/ui.xml

# 2. 将文件拉取到本地
adb pull /sdcard/ui.xml

# 3. 查看布局文件内容(可用文本编辑器或浏览器打开)
cat ui.xml # 或使用支持XML高亮的编辑器

step2.使用xpath查询ui.xml中的元素并操作它

假设ui.xml如下图,你可以使用如下代码,点击Settings文本框

element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//android.widget.TextView[@text="Settings"]'))
)
element.click()

由于xpath可以通过父子关系来定位节点,所以即便该节点没有text或id属性,也可以通过父子关系被定位到。可以说,只要这个元素在布局文件中(当前页面的DOM树),就可以用xpath定位到(复杂布局通过父子关系定位节点可能会有性能问题)。

AI时代多模态大模型通过页面截图和元素坐标来访问元素

这种通过视觉来定位元素的方式,使得UI自动化不再依赖于Xpath,和前端技术栈(native,react等)。

如何通过页面截图和元素坐标来访问元素?以下是Midscene.js的建议

但是,凡事有利必有弊

把页面截图给大模型api,通常会导致token数量明显增加,说白了就是有费钱的风险。对于个人开发者或者小公司,需要关注一下这个点。

 

大模型(LLM)驱动的APP自动化时代,使用xpath定位页面元素恐成为历史

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top