前言

在 APP 迭代频繁的当下,UI 自动化测试用例维护一直是效率瓶颈。droidrun 框架通过自然语言驱动 + 视觉大模型的创新模式,实现了安卓 /iOS 双端自动化测试的智能化与低维护成本,为测试工程师提供了全新解决方案。

框架核心能力与优势

技术选型与特性

    • 跨平台支持:同时兼容 Android 与 iOS,一套框架覆盖双端测试(GitHub 地址:
      droidrun 核心框架
      Androidportal
      iOSportal
    • 智能元素识别:自动生成 AccessibilityTree 获取页面元素,结合截图视觉识别,摆脱传统坐标定位的脆弱性。
    • 自然语言驱动:直接通过中文指令(如 “打开抖音→搜索家常菜”)驱动测试,无需编写复杂脚本。
    • 可定制性:基于 Python 代码架构,支持二次开发与业务逻辑定制。
 

环境搭建:

️ 环境搭建指南(分端详解)

Android 端配置

  1. 安装与启动:

    • 从 release 页下载droidrun-portal.apk并安装。
    • 打开 APP,进入系统「设置」→「辅助功能」→「已安装的服务」→ 启用「droidrun portal」,此时页面元素会显示框选标记。
  2. 命令行工具:
    • 获取页面元素: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自动化测试的更多相关文章

  1. <自动化测试方案_7>第七章、PC端UI自动化测试

    第七章.PC端UI自动化测试 UI自动化测试又分为:Web自动化测试,App自动化测试.微信小程序.微信公众号UI层的自动化测试工具非常多,比较主流的是UFT(QTP),Robot Framework ...

  2. APP的UI自动化测试框架及平台化探索

    顾铮,10年+测试及测试开发相关经验,2014年加入京东,曾主导设计开发UI测试框架,参与CI测试平台建设,现负责iOS侧的工具,框架建设.在UI自动化,性能测试,单元测试方面有较深入研究,在App, ...

  3. 关于做移动端ui自动化测试使用PC代理网络会出现的问题

    无论是手动操作app还是ui脚本操作app,只要你使用了代理网络,第一次请求的时长会耗时特别长,所以在移动端测试时尽量不要使用代理网络,减少不必要的麻烦

  4. 搭建基于IDEA+Selenium+Java+TestNG+Maven+Jenkins+SVN的Web端UI自动化测试环境

    第一步:工具下载安装配置 JDK安装与配置 IDEA安装与配置 Maven安装与配置 Tomcat部署与配置 Jenkins部署与配置 Svn安装与配置 各浏览器驱动下载与配置 第二步:集成各个工具到 ...

  5. Python+Selenium+Appium对APP进行UI自动化测试

    1. 安装Python3.7版本 pythonjava的JDK java -version javac nodejs node --versionappium 若nodejs安装完毕,使用npm安装a ...

  6. appium+python 【Mac】UI自动化测试封装框架流程简介 <一>

    为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...

  7. 使用AirtestProject+pytest做支付宝小程序UI自动化测试

    一,前言 1,背景 因公司业务需要做支付宝小程序的UI自动化测试,于是在网上查找小程序的自动化资料,发现微信小程序是有自己的测试框架的,但几乎找不到支付宝小程序UI自动化测试相关的资料.白piao失败 ...

  8. Web/app端自动化测试对比

    Web/app端自动化测试 做了一段时间的Android自动化测试,对比个人之前做的web端自动化测试,有一些感想.(由于个人接触的时间也不是太久,很多东西理解也并不深刻,先写下菜鸟时期的感想.) 区 ...

  9. 移动端UI界面设计:APP字体排版设计的七个原则

    移动端UI界面设计:APP字体排版设计的七个原则 发布于: 2015 年 2 月 9 日 by admin 再来谈移动端APP字体排版设计,也许有人会说,这个还有什么好说的呢?但是真正能够运用好APP ...

  10. APP UI自动化测试思路总结

    python+appium自动化测试系列就要告一段落了,本篇博客咱们做个小结. 首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所 ...

随机推荐

  1. 在 .NET 中 使用 ANTLR4

    前言 本文将介绍如何在 .NET 中使用 ANTLR4 构建语法分析器.由于篇幅限制,本文不会深入讲解 ANTLR4 的语法规则,相关内容可参考 ANTLR4 的官方文档或其他资料.本文将涵盖以下内容 ...

  2. SparkSql 写 Es

    官方文档 key 备注 es.write.operation index(默认)添加新数据,旧数据被替换,重新索引;create添加新数据,数据存在抛出异常;update 更新现有数据,不存在抛出异常 ...

  3. Asp.net core 少走弯路系列教程(三)CSS 学习

    前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...

  4. 20K star!让网页设计秒变手绘风,这个开源库太有创意了!

    "Rough.js 是一个轻量级的图形库(仅8KB),能够为网页元素赋予自然的手绘质感.通过独特的算法模拟人类绘画的不规则性,开发者只需几行代码即可为图表.流程图.UI组件等数字内容注入生动 ...

  5. 活动箭线的"总时差和专用时差"

    总时差:后大 - 前小 - 作业时间 专用时差:后小 - 前大 - 作业时间

  6. C++基础——引用和指针篇

    一.指针(Pointer) 定义: 指针是一个变量,用于存储另一个变量的地址. 基本用法: #include <iostream> using namespace std; int mai ...

  7. vue3 基础-样式绑定语法

    本篇讲 vue 通过数据去进行 dom 样式的绑定操作, 主要分为 字符串, 数组, 对象等方式, 这个非常好理解, 凭着我们朴素的情感就能一步领悟到位的, 就还是演示一段吧. 字符 & 数组 ...

  8. 鸿蒙NEXT(四):后台任务的智能调度策略 — 延迟任务管理解析

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  9. TVM: 编译流程

    深度学习编译器介绍 每一种硬件对应一门特定的编程语言,再通过特定的编译器去进行编译产生机器码,那随着硬件和语言的增多,编译器的维护难度会有很大困难.现代编译器已经解决了这个问题. 为了解决这个问题,科 ...

  10. C++ 容器(STL容器)

    容器(container)用于存放数据的类模板.可变长数组.链表.平衡二叉树等数据结构在STL中都被实现为容器. 在使用容器时,即将容器类模型实例化为容器类,会指明容器中存放的元素是什么类型. 容器可 ...