droidrun-APP端UI自动化测试
前言
框架核心能力与优势
技术选型与特性
- 跨平台支持:同时兼容 Android 与 iOS,一套框架覆盖双端测试(GitHub 地址:
droidrun 核心框架
Androidportal
iOSportal) - 智能元素识别:自动生成 AccessibilityTree 获取页面元素,结合截图视觉识别,摆脱传统坐标定位的脆弱性。
- 自然语言驱动:直接通过中文指令(如 “打开抖音→搜索家常菜”)驱动测试,无需编写复杂脚本。
- 可定制性:基于 Python 代码架构,支持二次开发与业务逻辑定制。
环境搭建:
️ 环境搭建指南(分端详解)
Android 端配置
- 安装与启动:
- 从 release 页下载droidrun-portal.apk并安装。
- 打开 APP,进入系统「设置」→「辅助功能」→「已安装的服务」→ 启用「droidrun portal」,此时页面元素会显示框选标记。
- 命令行工具:
- 获取页面元素:
adb shell am broadcast -a com.droidrun.portal.GET_ALL_ELEMENTS - 查看元素日志:
adb logcat | grep DROIDRUN
- 获取页面元素:
iOS 端配置
1、安装ios-portal,拉取代码,使用xcode打开droidrun-ios-portal.xcodeproj,编译安装droidrun portal APP
2、点击文件夹的droidrunportalserver,点击执行,安装droidrun-runner的APP成功。这个APP启动一个httpserver,支持获取页面的AccessbilityTree、等操作。供droidrun的应用在iosTools中调用

- 启动上述两个APP,即可开始后续的自动化操作
自动化测试执行示例
Python 测试脚本模板
1 tools = AdbTools(serial="MXG0222222007933")
2
3 deepseek_llm = load_llm(
4 "DeepSeek",
5 model="deepseek-chat",
6 api_key="sk-cbb06f4d26ae4441922a1bd61d48fea0", # or set DEEPSEEK_API_KEY
7 temperature=0.2
8 )
9
10 message ="启动抖音APP,等到完全进入到首页后点击右上角的搜索按钮,搜索关键字‘家常菜’。"
11 # Create agent
12 droid_agent = DroidAgent(
13 goal=message,
14 llm=deepseek_llm, # Language model
15 tools=tools, # Tool provider
16 personas=[UI_EXPERT],
17 max_steps=15,
18 timeout=1000,
19 reasoning=True,
20 reflection=False,
21 enable_tracing=False,
22 debug=True,
23 save_trajectories=True
24 )
25 # 创建一个新的上下文对象,确保传递 workflow 参数
26 ctx = Context(workflow=droid_agent)
27 await droid_agent.run(ctx=ctx)
任务分解示例(大模型自动生成)
大模型根据提示词,自行分解任务流程,并自动生成python代码,依次完成任务:

⚙️ 框架优缺点与改进方向
优势亮点
- 跨平台一致性:一次开发,双端运行,降低维护成本。
- 低代码门槛:自然语言驱动,测试人员无需精通编程即可编写用例。
- 视觉智能加持:结合图片识别,应对动态元素与 UI 变更场景。
️ 现存挑战
- 执行效率:自动化流程速度较慢,复杂用例耗时较长。
- 稳定性:部分场景存在失败概率(如元素识别延迟)。
- 大模型限制:当前仅支持 DeepSeek 平台,模型选择较少。
未来优化方向
- 支持脑图用例直接转换为 Promot 指令,实现 “可视化用例→自动化执行” 闭环。

- 扩展大模型兼容性,支持更多国产 LLM(如百川、智谱 AI)。
droidrun-APP端UI自动化测试的更多相关文章
- <自动化测试方案_7>第七章、PC端UI自动化测试
第七章.PC端UI自动化测试 UI自动化测试又分为:Web自动化测试,App自动化测试.微信小程序.微信公众号UI层的自动化测试工具非常多,比较主流的是UFT(QTP),Robot Framework ...
- APP的UI自动化测试框架及平台化探索
顾铮,10年+测试及测试开发相关经验,2014年加入京东,曾主导设计开发UI测试框架,参与CI测试平台建设,现负责iOS侧的工具,框架建设.在UI自动化,性能测试,单元测试方面有较深入研究,在App, ...
- 关于做移动端ui自动化测试使用PC代理网络会出现的问题
无论是手动操作app还是ui脚本操作app,只要你使用了代理网络,第一次请求的时长会耗时特别长,所以在移动端测试时尽量不要使用代理网络,减少不必要的麻烦
- 搭建基于IDEA+Selenium+Java+TestNG+Maven+Jenkins+SVN的Web端UI自动化测试环境
第一步:工具下载安装配置 JDK安装与配置 IDEA安装与配置 Maven安装与配置 Tomcat部署与配置 Jenkins部署与配置 Svn安装与配置 各浏览器驱动下载与配置 第二步:集成各个工具到 ...
- Python+Selenium+Appium对APP进行UI自动化测试
1. 安装Python3.7版本 pythonjava的JDK java -version javac nodejs node --versionappium 若nodejs安装完毕,使用npm安装a ...
- appium+python 【Mac】UI自动化测试封装框架流程简介 <一>
为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...
- 使用AirtestProject+pytest做支付宝小程序UI自动化测试
一,前言 1,背景 因公司业务需要做支付宝小程序的UI自动化测试,于是在网上查找小程序的自动化资料,发现微信小程序是有自己的测试框架的,但几乎找不到支付宝小程序UI自动化测试相关的资料.白piao失败 ...
- Web/app端自动化测试对比
Web/app端自动化测试 做了一段时间的Android自动化测试,对比个人之前做的web端自动化测试,有一些感想.(由于个人接触的时间也不是太久,很多东西理解也并不深刻,先写下菜鸟时期的感想.) 区 ...
- 移动端UI界面设计:APP字体排版设计的七个原则
移动端UI界面设计:APP字体排版设计的七个原则 发布于: 2015 年 2 月 9 日 by admin 再来谈移动端APP字体排版设计,也许有人会说,这个还有什么好说的呢?但是真正能够运用好APP ...
- APP UI自动化测试思路总结
python+appium自动化测试系列就要告一段落了,本篇博客咱们做个小结. 首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所 ...
随机推荐
- 在 .NET 中 使用 ANTLR4
前言 本文将介绍如何在 .NET 中使用 ANTLR4 构建语法分析器.由于篇幅限制,本文不会深入讲解 ANTLR4 的语法规则,相关内容可参考 ANTLR4 的官方文档或其他资料.本文将涵盖以下内容 ...
- SparkSql 写 Es
官方文档 key 备注 es.write.operation index(默认)添加新数据,旧数据被替换,重新索引;create添加新数据,数据存在抛出异常;update 更新现有数据,不存在抛出异常 ...
- Asp.net core 少走弯路系列教程(三)CSS 学习
前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...
- 20K star!让网页设计秒变手绘风,这个开源库太有创意了!
"Rough.js 是一个轻量级的图形库(仅8KB),能够为网页元素赋予自然的手绘质感.通过独特的算法模拟人类绘画的不规则性,开发者只需几行代码即可为图表.流程图.UI组件等数字内容注入生动 ...
- 活动箭线的"总时差和专用时差"
总时差:后大 - 前小 - 作业时间 专用时差:后小 - 前大 - 作业时间
- C++基础——引用和指针篇
一.指针(Pointer) 定义: 指针是一个变量,用于存储另一个变量的地址. 基本用法: #include <iostream> using namespace std; int mai ...
- vue3 基础-样式绑定语法
本篇讲 vue 通过数据去进行 dom 样式的绑定操作, 主要分为 字符串, 数组, 对象等方式, 这个非常好理解, 凭着我们朴素的情感就能一步领悟到位的, 就还是演示一段吧. 字符 & 数组 ...
- 鸿蒙NEXT(四):后台任务的智能调度策略 — 延迟任务管理解析
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- TVM: 编译流程
深度学习编译器介绍 每一种硬件对应一门特定的编程语言,再通过特定的编译器去进行编译产生机器码,那随着硬件和语言的增多,编译器的维护难度会有很大困难.现代编译器已经解决了这个问题. 为了解决这个问题,科 ...
- C++ 容器(STL容器)
容器(container)用于存放数据的类模板.可变长数组.链表.平衡二叉树等数据结构在STL中都被实现为容器. 在使用容器时,即将容器类模型实例化为容器类,会指明容器中存放的元素是什么类型. 容器可 ...