app ui自动化--2、元素定位的几种方法+通过appium启动被测app
一、环境搭建,参考:
https://www.cnblogs.com/wxinyu/p/16016918.html
二、模拟器配置(或者使用真机)
1、下载夜神模拟器
2、将D:\software\AndroidSDK24.4.1\platform-tools目录下的adb.exe复制到D:\software\Nox\bin目录下,分别替换D:\software\Nox\bin目录下的adb.exe和nox_adb.exe
3、启动夜神模拟器
4、使用adb devices命令查找设备链接,出现127.0.0.1:62001的代表配置成功
5、在模拟器中安装被测程序
三、元素定位工具
做自动化测试最重要的是要先定位到元素,appium定位元素和selenium类似,准确的说appium也是继承了selenium的方法。
工具1、uiautomatorviewer
uiautomatorviewer是Android SDK自带的元素定位工具
a)前置条件:通过真机或虚拟机连接上电脑,可通过adb devices命令验证
b)双击打开uiautomatorviewer.bat工具,工具在AndroidSDK安装目录的tools文件夹中
c)选择图中标记的区域,可展示手机当前页面的元素
d)通过点击手机页面相关区域,在右边可以看到app的xml结构树,可以获取到每个节点的详细属性,例如text、class等,拿到元素信息后就可以使用代码来操作了
工具2、weditor
weditor是基于浏览器技术的UI查看器,直接在浏览器打开。
a)安装weditor库
pip install -U weditor # 该命令会安装uiautomator2和Facebook-wda两个库,分别支持Android和ios的app
执行该命令后,报错下图

解决办法:
已知目前版本是0.6.5,所以尝试降低一下版本安装
pip install weditor==0.6.4

查看版本:pip list | findstr weditor
大功告成!!!
b)第一次连接时需要在手机上安装工具
python -m uiautomator2 init # 执行该命令会自动向手机端安装 ATX和com.github.uiautomator.test两个工具
c)启动weditor服务
命令行输入 python -m weditor

此时会在浏览器中自动访问 http://localhost:17310/ 可看到设备的当前停留页面
重点提醒:选择设备后方的输入框中一定要输入你连接了电脑的设备名称,不然会一直报错 Local server not started, start with $ python -m weditor
注意:
如果用appium编写APP自动化用例,而使用weditor来查看页面元素。在运行appium用例脚本时需要停止UiAutomator守护服务,因为UiAutomator相关进程会导致appium依赖的uiautomatorviewer 服务无法运行。
关闭方法参考文档:https://github.com/openatx/uiautomator2#stop-uiautomator
d)常见报错
1、启动程序报错: ModuleNotFoundError: No module named 'cv2' 解决办法: pip install opencv-python
2、启动程序报错: No module named ‘StringIO’ 解决办法: 找到报错的main文件,打开将“import StringIO”注释掉,添加如下代码:
try: from io import StringIO except ImportError: from cStringIO import StringIO
工具3、Appium Inspector
a)启动Appium服务(可通过命令行 输入 appium 启动,或通过GUI启动)
b)打开Appium Inspector工具
c)可手动添加Desired Capabilities
d)常用参数
具体参数参照:
https://appium.io/docs/en/writing-running-appium/caps/
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
e)设置好以下这些参数后,点击右下角【Start Session】,可以获取到每个节点的详细属性。
四、用例录制
五、查找Packagename和Activity
方法1、 adb shell "logcat | grep START"
方法2、 下载AAPT build-tools,并配置环境变量,下载地址:https://androidaapt.com/ aapt dump badging xx.apk (apk的绝对路径) 这个命令会输出很多东西,翻到最前方,找到package:name=xxx,引号中的就是packagename 向下拉,找到launchable-activity:name=xxx,引号中的就是activity name
六、自动化代码编写
1、前置条件
a)启动Appium服务。--在命令行中输入
appium
2、连接手机--使用python
a)导入webdriver
from appium import webdriver
b)连接设备和App
from appium import webdriver server = 'http://localhost:4723/wd/hub' # appium服务器的地址,端口默认就是4723,启动appium服务时,可看到端口号 devices_system = { 'platformName': 'Android', # 平台名 'driverName': 'A5RNW17C03006527', # 设备名,可通过adb devices查询 'platformVersion': '8.0.0', # 系统版本,可通过该命令查询adb shell getprop ro.build.version.release,若是鸿蒙系统,写10.0(实际测试鸿蒙系统貌似不支持连接uiautomatorviewer工具) 'appPackage': 'com.xxx', # 被测系统的包名,可通过adb shell "logcat | grep START"查询 'appActivity': 'xxx.WelcomeActivity' # 被测系统的Activity,可通过adb shell "logcat | grep START"查询 } driver = webdriver.Remote(server,devices_system) # 连接手机和App
c)运行测试一下,以上代码会执行打开App操作
说明:首次运行时,会自动向手机中安装应用:Appium Settings、io.appium.uiautomato2.server这两个工具
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具