Appium 3.x实战:获取元素属性全解析
📅 2026/7/24 21:01:56
👁️ 次浏览
Appium 3.x 实战笔记扒光元素看个够 —— text、size、location、page_source 获取秘籍适配 Python Client 5.x前言在自动化测试中光会点击、输入还不够你总得知道找到的元素到底“长”什么样吧它显示了啥文字宽高多少藏在屏幕哪个旮旯甚至整个页面的 XML 结构是啥这篇笔记我就用Appium 3.x Appium-Python-Client 5.x的环境手把手带你获取元素的text、size、location以及全页面的page_source。老规矩雷电9安卓9实操验证代码复制即用配合全程风趣讲解保你一看就懂忘了还能当速查表。本文为个人原创学习笔记发布于 CSDN 仅作技术交流Appium 遵循 Apache 2.0 开源协议。一、这次我们要扒什么属性含义能干啥text元素上显示的文字断言页面内容是否正确size元素的宽和高单位像素验证控件尺寸、判断是否可点击location元素左上角的坐标{x, y}辅助坐标点击、滑动计算page_source当前页面的完整 XML 结构调试定位、快速查找层级关系一句话总结text 看字size 看块location 看位置page_source 看全家。二、核心语法新版必用fromappium.webdriver.common.appiumbyimportBy# 定位一个元素新版统一写法eldriver.find_element(By.XPATH,//*[textWLAN、移动网络、流量使用])# 扒信息print(el.text)# 输出元素文字print(el.size)# 输出字典 {height: 29, width: 296}print(el.location)# 输出字典 {x: 108, y: 236}# 打印整个页面的源码print(driver.page_source)老版本可能用过el.get_attribute(text)之类的但在 5.x 中直接用属性el.text最香简单又 Pythonic。三、完整示例代码复制即用importtimefromappiumimportwebdriverfromappium.options.commonimportAppiumOptionsfromappium.webdriver.common.appiumbyimportBy# 连接设置caps{platformName:Android,appium:platformVersion:9,appium:deviceName:25102RKBEC,# 你的设备名appium:automationName:UiAutomator2,appium:appPackage:com.android.settings,appium:appActivity:com.android.settings.Settings,appium:noReset:True,}optionsAppiumOptions()options.load_capabilities(caps)driverwebdriver.Remote(http://127.0.0.1:4723,optionsoptions)# 定位“网络和互联网”下面的小字“WLAN、移动网络、流量使用”eldriver.find_element(By.XPATH,//*[textWLAN、移动网络、流量使用])print( 扒开看看 )print(文字内容,el.text)print(尺寸大小,el.size)# 宽 x 高print(所在位置,el.location)# 左上角坐标print( 全家福 )print(driver.page_source)# 整个页面的 XML# 等待3秒关闭APPtime.sleep(3)driver.execute_script(mobile: terminateApp,{appId:com.android.settings})driver.quit()四、运行结果 解读笑点满满版1. 文字内容文字内容 WLAN、移动网络、流量使用妥妥的就是我们定位的那个辅助说明。如果打印出来是空字符串那多半是元素没有text属性比如ImageView、容器别慌。2. 尺寸大小尺寸大小 {height: 29, width: 296}单位是像素。这个元素高 29px宽 296px。知道了宽高我们就可以判断控件是否被遮挡或者变没变形。比如常见的“按钮居然只有 1px 高”那肯定是渲染飞了。3. 所在位置所在位置 {x: 108, y: 236}这个坐标是元素左上角距离屏幕左上角的位置。x108表示离左边缘 108pxy236离上边缘 236px。以后想用TouchAction去点某个元素的右下角那就用x width、y height算出来。4. page_source节选?xml version1.0 encodingUTF-8 standaloneyes ? hierarchy index0 classhierarchy rotation0 width1600 height900 android.widget.FrameLayout ... android.widget.LinearLayout ... ... android.widget.TextView textWLAN、移动网络、流量使用 resource-idandroid:id/summary bounds[108,236][404,265] ... / ... /android.widget.LinearLayout /android.widget.FrameLayout /hierarchy别被它吓到这其实就是 Appium 看到的 UI 树。你以后定位元素时写的 XPath就是在这棵树里玩捉迷藏。当你在 Inspector 里点来点去拿不到resource-id的时候把这个打印出来CtrlF一把梭爽不爽五、这些属性到底有什么用实战场景断言文字assert流量使用inel.text,难道我的流量偷偷跑了判断元素大小变化比如点开一个展开菜单前后size[height]从 50 变成 200说明展开了。自动截图时标记位置用location和size算出元素中心再配合PIL画个红框回归测试对比图一键生成。调试定位神器page_source定位不到元素时把源码存成.xml文件扔到浏览器里看层级或者直接复制节点文本写 XPath比 Inspector 还直观。六、新手避坑 幽默总结坑1text 为空如果你拿到的text是先看看元素是不是EditText或者ImageView它们压根就没有text属性。正确做法先去 Inspector 看一眼别逮着一个ImageView就问人家“你叫什么名字”。坑2size 和 location 单位别搞混单位是像素px不是 dp也不是你屏幕的物理尺寸。你可以在脚本里根据屏幕密度转换但绝大多数时候像素够用了。坑3page_source 爆炸输出像系统设置的页面 XML 还算克制你要是打开一个复杂 APP比如朋友圈那个page_source打印出来能让 PyCharm 卡半分钟。强烈建议只打印关键部分print(driver.page_source[:500])或者存文件再查。坑4老方法已凉driver.find_element_by_xpath()这种写了只会送你一个AttributeError必须用find_element(By.XPATH, ...)。看一百遍不如亲自踩一次踩了以后这篇笔记你就珍藏了。版权与参考说明本文为个人原创学习笔记所有代码与案例均为实操整理发布于 CSDN 仅作技术交流Appium 为开源自动化测试框架遵循 Apache 2.0 开源协议引用其官方规范仅作学习说明参考资料Appium 官方文档。
《Agent面试详解》系列:上篇:运行时与上下文 中篇:记忆、工具与并发 下篇:评测、安全与落地
上篇搭好了 Agent 的运行时骨架:状态机驱动循环,checkpoint 负责恢复,上下文按 Token 预算动态组…
📅 2026/7/24 21:01:56
青龙面板自动签到终极指南:30平台一键搞定 【免费下载链接】check 青龙面板平台签到函数 项目地址: https://gitcode.com/gh_mirrors/check5/check
每天早上醒来,你第一件事是不是打开手机,像机器人一样重复着B站、微博、网易云音乐的…
📅 2026/7/24 21:01:56
DecoTV完全指南:如何快速搭建跨平台影视聚合播放站 【免费下载链接】DecoTV 基于最新版LunaTV二次开发的一个开箱即用的、跨平台的影视聚合播放站。【原KatelyaTV】 项目地址: https://gitcode.com/gh_mirrors/de/DecoTV
DecoTV是一款基于最新版LunaTV二次开…
📅 2026/7/24 21:01:56
WaveTools鸣潮工具箱终极指南:解锁高帧率画质与智能抽卡分析 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools
你是否曾在《鸣潮》的世界中感受到画面卡顿的困扰?是否羡慕高端显卡玩家…
📅 2026/7/24 22:20:50
文章目录冒烟测试(Smoke Testing)详解:为什么每次发布前都应该先做一次?什么是冒烟测试?为什么叫"冒烟(Smoke)"?冒烟测试的目标冒烟测试通常检查哪些内容?1. 服…
📅 2026/7/24 22:20:50
5分钟终极指南:使用Firefox脚本高效下载Sketchfab 3D模型用于学习研究 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab
你是否经常在Sketchfab上发现令人…
📅 2026/7/24 22:20:50
SQLyog社区版:5分钟掌握完全免费的MySQL数据库管理终极指南 【免费下载链接】sqlyog-community Webyog provides monitoring and management tools for open source relational databases. We develop easy-to-use MySQL client tools for performance tuning and d…
📅 2026/7/24 22:20:50
走进 Gang of Four 设计模式:责任链模式 说明:不仅告诉你"怎么用",更告诉你"为什么这样设计" 前置知识:Java 面向对象基础(抽象类、多态、链表结构) 📊 设计模式分类总览
…
📅 2026/7/24 22:20:50
如何在浏览器中实现专业级3D模型可视化?Online3DViewer五大实用功能解析 【免费下载链接】Online3DViewer A solution to visualize and explore 3D models in your browser. 项目地址: https://gitcode.com/gh_mirrors/on/Online3DViewer
在数字化设计时代&…
📅 2026/7/24 22:19:49
大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…
📅 2026/7/24 0:00:05
srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…
📅 2026/7/24 0:01:06
该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…
📅 2026/7/24 0:01:06
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/24 1:07:52
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/24 1:07:52
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/24 1:07:52
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/24 7:08:08
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/24 17:08:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/24 5:08:03