公司部门调整 PC 部门和无线部门合并,原本负责主站 PC 端自动化的同事需要马上上手安卓,IOS 自动化。对于初次接触移动端的测试者来说,跨度还是有点大的。加之人员有些变动,不得不搞个工具降低学习成本,马上产出。公司 app 页面上有动态加载的元素,每次用 Appium 自带的工具抓取 Xpath 时,总是报错。为了降低自动化同学的学习成本和解决无法的问题,就对 uiautomatorviewer 二次开发。
二次开发 uiautomatorviewer 优化定位符生成自动化代码实践总结分享
和原生的 SDK 自带的 uiautomatorviewer 优点:
appium 自带工具安卓端和 ios 原理都是相同的。截图 +Pagesource 的 xml 去根据坐标高亮选中元素。
实践并总结一下各路大神的无私分享,谢谢各位授之于渔,如有雷同实属参照,改造工具没别的,跟着好的思路分享,就是干!非常感谢,期待大神们分享更多更好的工具思路。
jar 包放到 Git 上了jar 包和具体使用说明
刚完成雏形,还很多要完善的地方,刚玩自动化的人伤不起啊,下班了。
后期打算支持生成 Python 的代码,感觉现在社区 py 很多,欢迎大家不吝赐教我继续改进!觉得 OK 的 git star 一下。
真机可以用了吗?
刚试了下,华为的手机是可以的,苹果需要启动 appium 的 inspector 后才能抓
苹果手机不起 appium 的 inspector 也是可以的。前提是手机里面 WDA 已经安装启动了。
华为,op,夜神都是可以的。
ios 的我这试了下,只能抓到 UICatalog 这个 app 的页面,其他 app 的页面一抓就报错(能用 appium 的 inspector 抓到),是不是哪里操作错了 :
啊。奇怪了,这个就是利用 WDA 抓取 xml。你 浏览器敲这个 127.0.0.1:8001/status 看看返回值。能拿到 Sessionid 么
我手机 iPhone6P ios9.3.4,刚试了,是可以抓取的。你 先用 appium inspector 去抓,主要是利用 appium inspector 去启动 WDA,完事后,你再试试这个工具。
楼主,给你反馈问题来了,看看啥问题哈
Error while parsing UI hierarchy XML file: null[Ljava.lang.StackTraceElement;@3711cea6
复制 LvmamaXmlKit.jar 到本地 D 盘根目录下,打开命令行窗口执行命令:adb push D:\LvmamaXmlKit.jar /data/local/tmp/
只要这个命令执行成功,不报错,就是成功了。
LvmamaXmlKit.jar 这个 jar,放到手机里了么?复制 LvmamaXmlKit.jar 到本地 D 盘根目录下,打开命令行窗口执行命令:adb push D:\LvmamaXmlKit.jar /data/local/tmp/
这个是取得 xml 和截图的关键所在
楼主,请问这是什么情况啊@3711cea6
Windows 还是 Mac ?
LvmamaXmlKit.jar 这个 jar,放到手机里了么?复制 LvmamaXmlKit.jar 到本地 D 盘根目录下,打开命令行窗口执行命令:adb push D:\LvmamaXmlKit.jar /data/local/tmp/
这个是取得 xml 和截图的关键所在
刚测试了一下。没有毛病啊。你再认真看一下操作步骤,看是否有遗漏
你先 SDK 自带 jar 的试试,自带的 jar 不行的话。那我这个工具也是不行的。
自带的可以
我也遇到了上面的情况
平台是 mac
Mac 电脑。先用 appium 自带的 inspector 试试看,看自带的能不能抓取。能够抓取时,在用这个工具,用的时间手机别锁屏
真机 :小米 MX2
看不到/data 目录下的东西
真机看不到 data 下面东西正常,但是目录是确实存在的,实在想看那个目录的话,可以执行 shell 命令查看。执行命令后,是可以把文件推送到那个目录的,文件推送成功就可以了
不得不佩服重新造轮子的同行,但是轮子已有,还不用小白用户安装客户端软件,直接在浏览器中录制。
可以看看 macaca 是怎么玩的,看懂了,录制就是一层窗户纸,一下就捅破了,除了对 macaca 进行二次开发,否则录制没有任何技术含量。
Macaca 虽好,玩家占比不多吧,Macaca 不需要安装东西?关键是 Macaca 那一套东西也不是我这样小白能看懂的啊。对你们来说是一层窗户纸,对我这样低段位玩家来说,简直是铜墙铁壁啊 等你分享你的基于 Macaca 二次开发的工具哦
macaca 的作者在社区里面很活跃,大家可以咨询一下
其实就是 pagesource 的解析,可以先转成 json,然后前端用 tree 和 两层 canvas 就可以渲染出 inspector 的效果了,没啥难度;
跟我报错一样的小伙伴,把 JDK 改为 1.8 后,完美运行!附官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
能支持 H5 就太有爱了,感谢楼主分享,已点赞!
赞一个,很方便
环境
java 1.8.0 Lvxxxxx.jar 推送成功. tools 也替换 uiautomatorviewer.
等下我用模拟器看看
麻烦大佬了
大兄弟,你这个实在对不起。Mac 环境下, 我这搞成默认是 iPhone 了。不支持 Mac 下的安卓。非常抱歉啊
为什么一定要用 xpath ?
1,xpath 相对来说比较通用,2.ios 刚学习,id 对应 pagesource xml 里那个东西没有调查清楚,ios 这块还没做好
请教大神, 像下面这种 Music List 怎么获取元素, UiAutomator 包括您的二次开发都获取不到呢
用 DumpHierarchy 能获取到 Text value,但是在执行 Click 的时候还是说 UiObject 不存在,这是什么原因呢?
多谢分享,之前自己也做了一个 android 的控件获取工具,还带录制回放,大致思路都是获取 xml 解析和 android 自身的屏幕设备点击事件获取 getevent,ios 只是研究过机制,能统一一套还是挺不错的。
是的我也是那个思路。我是刚学 ios 的自动化,没搞定,经常报错。机制还没搞明白。公司要产出,只能先搞搞自动化了
楼主,我的电脑无法启动 uiautomator 无法启动,帮忙看看什么原因呢?
,厉害了大神,已装好,很好用,但是如果用 po 的话还是得自己手打手的敲
对了楼主问你个问题,我们公司开发一个 app 是用 Unity 开发的,但是这个用 uiautomatorviewer 捕捉不到屏幕元素。用 appium 应该是不能实现自动化了。还有其他的测试框架能适用这个吗?
楼主,这个如何解决??
内容不错,认真学习一下
敢问作者优化好驴妈妈图片闪的问题了吗
楼主,这是手机的不兼容嘛?