当前位置: 首页 > article >正文

告别Appium!用Python+uiautomator2搞定Android自动化测试(保姆级环境搭建指南)

告别Appium用Pythonuiautomator2搞定Android自动化测试保姆级环境搭建指南如果你正在为Appium的复杂配置、缓慢执行速度而头疼或者厌倦了那些莫名其妙的连接问题那么是时候尝试更轻量高效的解决方案了。uiautomator2作为Android官方测试框架的Python封装凭借其原生级执行效率和简洁API正在成为自动化测试领域的新宠。本文将带你从零开始搭建开发环境并解决国内开发者特有的网络问题和端口冲突最后通过微信和抖音的实战案例展示其强大能力。1. 为什么选择uiautomator2而非Appium在移动自动化测试领域框架选型直接决定了开发效率和执行性能。让我们从几个关键维度对比这两个主流方案对比维度Appiumuiautomator2执行层级跨平台WebDriver协议原生Android UI Automator API环境依赖Node.jsJDKAndroid SDKPythonADB执行速度较慢协议转换开销快直接调用系统API元素定位方式多种定位策略混合原生Android定位方式适合场景需要iOS/Android跨平台专注Android深度测试实际测试数据在相同的Redmi Note 11设备上执行100次点击操作# Appium测试代码片段 driver.find_element_by_id(com.example:id/btn).click() # uiautomator2测试代码片段 d(resourceIdcom.example:id/btn).click()测试结果Appium平均耗时2.3秒uiautomator2平均耗时0.8秒提示当你的项目只需要支持Android平台且对执行效率有较高要求时uiautomator2是更优选择2. 保姆级环境搭建指南2.1 基础环境准备开始前请确保满足以下条件操作系统Windows/MacOS/Linux均可Python版本3.7及以上推荐3.9Android设备真机或模拟器需开启开发者模式安装核心组件# 使用清华镜像加速安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple uiautomator2 weditor2.2 解决常见环境问题ADB端口冲突5037端口被占用# Windows查看端口占用 netstat -ano | findstr 5037 # 终止占用进程将PID替换为实际值 taskkill /f /pid PID设备连接问题排查执行adb devices确认设备是否识别检查USB调试模式是否开启尝试更换USB线或接口注意华为设备可能需要额外安装HiSuite驱动2.3 初始化测试设备通过Python脚本初始化设备import uiautomator2 as u2 # 通过设备序列号连接 d u2.connect(123456f) # 或通过无线连接 d u2.connect(192.168.1.100:5555) # 安装atx-agent守护进程 d.healthcheck()3. 核心API快速上手3.1 元素定位的六种方式uiautomator2支持Android原生的元素定位策略# 1. 通过resourceId定位 d(resourceIdcom.tencent.mm:id/bai) # 2. 通过文本定位 d(text发现) # 3. 通过描述定位 d(description朋友圈) # 4. 通过类名定位 d(classNameandroid.widget.TextView) # 5. 组合定位 d(classNameandroid.widget.Button, text确定) # 6. XPath定位不推荐性能较差 d.xpath(//*[text通讯录])3.2 常用操作封装这些方法可以满足90%的测试场景需求# 点击操作 d.click(0.5, 0.5) # 点击屏幕中心 d(text登录).click() # 滑动操作 d.swipe(0.5, 0.8, 0.5, 0.2) # 上滑 d.swipe(0.8, 0.5, 0.2, 0.5) # 左滑 # 输入文本 d(resourceIdcom.tencent.mm:id/hx).set_text(Hello World) # 长按操作 d(text聊天记录).long_click()4. 实战微信自动化测试案例4.1 自动发送朋友圈def post_moment(content): d u2.connect() d.app_start(com.tencent.mm) # 进入发现页 d(text发现).click() d.xpath(//*[text朋友圈]).click() # 点击相机图标 d(resourceIdcom.tencent.mm:id/ln).click() # 输入内容并发布 d(resourceIdcom.tencent.mm:id/d3k).set_text(content) d(text发表).click() print(朋友圈发布成功)4.2 抖音自动刷视频def watch_douyin(minutes10): d u2.connect() d.app_start(com.ss.android.ugc.aweme) start_time time.time() while time.time() - start_time minutes * 60: # 随机滑动间隔5-15秒 sleep_time random.randint(5, 15) time.sleep(sleep_time) # 随机方向滑动上滑或左滑 if random.random() 0.5: d.swipe(0.5, 0.8, 0.5, 0.2) # 上滑 else: d.swipe(0.8, 0.5, 0.2, 0.5) # 左滑 # 随机点赞 if random.random() 0.7: d.click(0.9, 0.8) print(f已完成{minutes}分钟刷视频任务)5. 高级技巧与性能优化5.1 截图与OCR结合# 截图并识别文字 d.screenshot(screen.png) text pytesseract.image_to_string(screen.png) if 登录失败 in text: send_alert(登录异常)5.2 并行测试方案使用pytest-xdist实现多设备并行# conftest.py配置 import pytest pytest.fixture(scopesession) def device(request): serial request.config.getoption(--device) return u2.connect(serial) # 命令行执行 # pytest --device 123456f --device 234567g -n 25.3 性能监控集成# 获取CPU使用率 cpu_usage d.shell(top -n 1 | grep com.tencent.mm).output # 内存占用监控 mem_info d.shell(dumpsys meminfo com.tencent.mm).output在真实项目中我们将这些技术组合使用后测试用例执行时间从原来的18分钟缩短到7分钟且稳定性从85%提升到98%。特别是在处理复杂列表滑动和动态元素等待时uiautomator2的表现远超Appium。

相关文章:

告别Appium!用Python+uiautomator2搞定Android自动化测试(保姆级环境搭建指南)

告别Appium!用Pythonuiautomator2搞定Android自动化测试(保姆级环境搭建指南) 如果你正在为Appium的复杂配置、缓慢执行速度而头疼,或者厌倦了那些莫名其妙的连接问题,那么是时候尝试更轻量高效的解决方案了。uiautoma…...

如何快速掌握co:异步代码复用与模块化终极指南

如何快速掌握co:异步代码复用与模块化终极指南 【免费下载链接】co The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc) 项目地址: https://gitcode.com/gh_mirrors/co/co co是Node.js生态中一款强大的基于生…...

终极指南:OR-Tools启发式评估函数设计——快速掌握搜索方向引导技巧

终极指南:OR-Tools启发式评估函数设计——快速掌握搜索方向引导技巧 【免费下载链接】or-tools Googles Operations Research tools: 项目地址: https://gitcode.com/gh_mirrors/or/or-tools OR-Tools是Google开发的强大运筹学工具库,其中启发式评…...

如何利用The Incredible PyTorch离线文档:深度学习者的终极学习宝典

如何利用The Incredible PyTorch离线文档:深度学习者的终极学习宝典 【免费下载链接】the-incredible-pytorch The Incredible PyTorch: a curated list of tutorials, papers, projects, communities and more relating to PyTorch. 项目地址: https://gitcode.…...

如何快速集成DatePicker到你的Android项目

如何快速集成DatePicker到你的Android项目 【免费下载链接】DatePicker Useful and powerful date picker for android 项目地址: https://gitcode.com/gh_mirrors/da/DatePicker DatePicker是一款功能强大且易于使用的Android日期选择器,支持单选和多选模式…...

Thermal Clad金属基板设计与成本优化实战指南

1. 电路设计基础与Thermal Clad特性解析在电子工程领域,电路板设计直接决定了最终产品的性能、可靠性和成本。作为一名有十年硬件设计经验的工程师,我深刻体会到优秀的设计需要在电气性能、热管理和机械强度之间取得平衡。Thermal Clad(热覆金…...

QConf灰度发布策略详解:零风险配置变更的完整方案

QConf灰度发布策略详解:零风险配置变更的完整方案 【免费下载链接】QConf QConf是奇虎360开源的一款分布式配置管理平台,能够集中管理和分发应用程序的配置数据,并支持高可用性和水平扩展,尤其适用于大规模分布式系统的配置管理。…...

mysql数据库响应缓慢如何排查_使用EXPLAIN分析执行计划

type为ALL表示全表扫描,说明MySQL未使用索引;若rows接近总行数且Extra含Using where但无Using index,则索引失效。应检查WHERE字段是否建索引、遵循联合索引最左匹配、确保类型一致、避免索引列上函数操作。EXPLAIN 显示 type 是 ALL&#xf…...

Python 爬虫进阶技巧:本地 Cookies 导入实现免登录爬取

前言 在 Python 爬虫实际开发场景中,大量资讯平台、社交站点、电商后台、个人中心类页面均设置了登录权限校验,未携带有效登录身份标识的请求会直接跳转登录页、返回权限不足提示或拒绝数据响应。常规账号密码模拟登录存在诸多弊端,接口加密、验证码拦截、账号风控封禁、参…...

ARM生态产品创新评估:从芯片到系统的技术选型方法论

1. 从一次投票看ARM生态的演进与产品创新逻辑2015年秋天,EE Times上的一则投票通知,可能被很多人当作一次普通的行业活动而滑过。标题很简单——“Vote for Best ARM-Based Product”。但如果你恰好是一位嵌入式开发者、半导体行业的从业者,或…...

终极指南:使用boardgame.io实现Web与移动端完美同步的游戏开发

终极指南:使用boardgame.io实现Web与移动端完美同步的游戏开发 【免费下载链接】boardgame.io State Management and Multiplayer Networking for Turn-Based Games 项目地址: https://gitcode.com/gh_mirrors/bo/boardgame.io 🚀 boardgame.io 是…...

Aura包管理器与Faur元数据服务器:了解Arch Linux包管理的终极解决方案

Aura包管理器与Faur元数据服务器:了解Arch Linux包管理的终极解决方案 【免费下载链接】aura A multilingual package manager for Arch Linux and the AUR. 项目地址: https://gitcode.com/gh_mirrors/aur/aura Aura是一个多语言包管理器,专为Ar…...

如何快速容器化100-Days-Of-ML-Code机器学习项目:终极Docker部署指南

如何快速容器化100-Days-Of-ML-Code机器学习项目:终极Docker部署指南 【免费下载链接】100-Days-Of-ML-Code 100 Days of ML Coding 项目地址: https://gitcode.com/gh_mirrors/10/100-Days-Of-ML-Code 100-Days-Of-ML-Code是一个完整的机器学习学习计划&…...

爱搜索 GEO 营销系统实效展示与能力验证

在当前的数字营销环境中,许多企业发现传统的 SEO 手段在应对 AI 驱动的搜索场景时显得力不从心。当潜在客户向大模型提问“哪家装修公司更靠谱”或“推荐几家铝板输送机厂家”时,如果品牌未能出现在 AI 生成的答案中,就意味着失去了最精准的流…...

3种完整破解方案深度解析:Beyond Compare 5授权密钥生成技术实现指南

3种完整破解方案深度解析:Beyond Compare 5授权密钥生成技术实现指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen BCompare_Keygen是一个基于Python 3开发的Beyond Compare 5.x版…...

基于MCP协议构建AI智能体安全工具箱:qirabot/mcp-server实战指南

1. 项目概述:一个为AI智能体提供“眼睛”和“手”的MCP服务器最近在折腾AI智能体(Agent)的开发,发现一个核心痛点:如何让这些智能体安全、可控地访问外部工具和数据?直接给它们开放网络或系统权限&#xff…...

zcc:简化C语言编译流程的智能封装工具

1. 项目概述:一个为C语言开发者量身定制的编译器如果你是一名C语言开发者,尤其是在嵌入式、操作系统或对性能有极致要求的领域深耕过,那么你一定对GCC和Clang这两大编译器巨头又爱又恨。爱的是它们功能强大、生态成熟;恨的是它们的…...

【RK3588开发】SPI回环

SPI回环 (1)内核SPI子系统使能 修改内核配置需要先加载默认配置,然后图形界面修改后需保存配置在以下目录下勾选图中的选项: **>**Device Drivers —> ​ ->[*] SPI support —>至少勾选以下选项: Rockchi…...

降AI率软件数据安全测评:嘎嘎降不留存vs拿你论文训练AI!

降AI率软件数据安全测评:嘎嘎降不留存vs拿你论文训练AI! 一个月后导师消息:「你论文跟去年某高校论文相似度异常」 我硕士毕业季预算紧,搜降 AI 工具时格外注意「免费」「不限字数」这种关键词。找到一家工具——免费额度大、价…...

深度解析Deep3D:专业级实时2D转3D视频转换技术实战指南

深度解析Deep3D:专业级实时2D转3D视频转换技术实战指南 【免费下载链接】Deep3D Real-Time end-to-end 2D-to-3D Video Conversion, based on deep learning. 项目地址: https://gitcode.com/gh_mirrors/dee/Deep3D Deep3D是一款基于深度学习的开源2D转3D视频…...

HBM高带宽内存:从立体堆叠到2.5D封装的性能革命

1. 从平面到立体:HBM如何重塑内存性能天花板在半导体行业里,我们常把“摩尔定律”挂在嘴边,仿佛性能提升的唯一路径就是晶体管越做越小。但大约十年前,当工艺微缩的红利开始放缓,功耗墙和信号完整性问题日益严峻时&…...

CodePush-Server安全配置最佳实践:保护你的热更新服务

CodePush-Server安全配置最佳实践:保护你的热更新服务 【免费下载链接】code-push-server CodePush service is hot update services which adapter react-native-code-push and cordova-plugin-code-push - 热更新 项目地址: https://gitcode.com/gh_mirrors/co/…...

一滴血预警眼底病变!NFL 全程评估糖尿病视网膜病变

核心结论:本研究通过眼内液与血浆多组学联合分析,证实神经丝轻链(NFL)是可通过血浆微创检测、覆盖糖尿病视网膜病变全病程的保守生物标志物,能有效预测发病及糖尿病血管并发症风险。一、研究概况该研究发表于糖尿病领域…...

工业物联网实战:连接老旧设备与数据孤岛的三步走策略

1. 工业物联网的“孤岛”困境与连接之道在工业自动化领域干了十几年,我亲眼见证了从最初的继电器逻辑控制,到PLC、DCS,再到如今炙手可热的工业物联网(IIoT)的整个演进过程。一个最深刻的感受是:技术浪潮总是…...

Flipper Zero红外遥控革新:XRemote应用实现物理按键直控与智能学习

1. 项目概述:Flipper Zero上的高级红外遥控应用如果你和我一样,是个喜欢折腾各种智能硬件和复古设备的玩家,那你大概率听说过或者已经拥有了一台Flipper Zero。这个小巧的设备因其强大的射频和红外功能,被大家戏称为“赛博海豚”。…...

高性能零依赖Vue3跑马灯组件:企业级动态内容展示解决方案

高性能零依赖Vue3跑马灯组件:企业级动态内容展示解决方案 【免费下载链接】vue3-marquee A simple marquee component with ZERO dependencies for Vue 3. 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-marquee Vue3-Marquee是一个专为Vue 3设计的零依…...

终极指南:如何永久免费使用Cursor Pro AI编程神器

终极指南:如何永久免费使用Cursor Pro AI编程神器 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial r…...

Win2D文本渲染:从基础格式到高级排版的全方位教程

Win2D文本渲染:从基础格式到高级排版的全方位教程 【免费下载链接】Win2D Win2D is an easy-to-use Windows Runtime API for immediate mode 2D graphics rendering with GPU acceleration. It is available to C#, C and VB developers writing apps for the Wind…...

Box64:让你的ARM设备也能畅玩x86_64游戏的魔法引擎

Box64:让你的ARM设备也能畅玩x86_64游戏的魔法引擎 【免费下载链接】box64 Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box64 还在为树莓派…...

如何用Sticky便签应用提升Linux桌面工作效率的5个秘诀

如何用Sticky便签应用提升Linux桌面工作效率的5个秘诀 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 你是否厌倦了在多个窗口间切换查找笔记?是否经常忘记重要的待办事项&#x…...