• 【工具引入】uiautomatorviewer 查找元素后自动生成代码


    缘起

    公司部门调整PC部门和无线部门合并,原本负责主站PC端自动化的同事需要马上上手安卓,IOS自动化。对于初次接触移动端的测试者来说,跨度还是有点大的。加之人员有些变动,不得不搞个工具降低学习成本,马上产出。公司app页面上有动态加载的元素,每次用Appium自带的工具抓取Xpath时,总是报错。为了降低自动化同学的学习成本和解决无法的问题,就对uiautomatorviewer 二次开发。

    和原生的SDK自带的 uiautomatorviewer 优点:

    • 优化截图速度,修复动态元素加载页面截图报错的问题
    • 优化Xpath提取规则,截取相对短的Xpath
    • 支持截取动态加载的页面
    • 自动生成代码
    • 支持U2的xpath 在改造上述工具分享帖子中,有幸得到@carl 老师的神点拨:“这个还可以兼容ios录制呢,好好玩”,于是就想继续对此进行再次开发,以支持IOS,顺便也偷点懒,生成一下IOS自动化中机械重复的代码(driver.findElement("//xxx.xxxxx").click())。不管是不是重复造轮子,对一个刚接触初次接触安卓,和IOS自动化的自己来说也是一次难得的学习机会。 不足之处希望各位老师见谅。 新工具特点:
    • 不需要设置inspector里面的各种参数,不需要启动appium
    • 重要的一点,不需要换定位工具,安卓那边用uiautomatorviewer ,IOS这边用inspector
    • 自动生成代码,我喜欢的懒方式,机械的事情,我只想Ctrl+C ,Ctrl+V
    • 地址: https://github.com/512433465/autotest_helper

    原理

    appium自带工具安卓端和ios原理都是相同的。截图+Pagesource的xml去根据坐标高亮选中元素。

    • 安卓:安卓定位基于【右上坐标】【左下坐标】两点定位元素布局
    • IOS:IOS定位基于【右上坐标】【高度,宽度】由定位点横轴长,纵轴长去定位元素布局 其他相差无几,搞清楚这两点我们就好着手改造
    • 获取PageSource的 xml 参考WebDriverAgent的wiki 把节点名称都换成node (XCUIElementXXXX--->node)因为以uiautomatorviewer 为基础,所以只能Xml以安卓端的为参照
    • 获取截图并压缩,不同的IOS机型截图像素是不同的,而且换算起来很麻烦,所以我选择压缩,压缩后也不用担心控件坐标与截图对应关系
    • 生成xpath,基于安卓的原理稍加改造即可。 以上参考WebDriverAgent的wiki和@carl 老师的帖子传送门

    使用

    • 安卓端:jar放在【android-sdk-windows oolslib】下(请先备份您自带的),启动方式猛击【android-sdk-windows oolsuiautomatorviewer.bat】
    • IOS位置任意位置:shell终端执行: java -XstartOnFirstThread -jar uiautomatorviewer.jar -XstartOnFirstThread(ios使用时,请先确保你用appium的inspector是可以抓取元素的)

    具体使用方式请参照Git上详细使用说明,这里不赘述了。请务必先看完Git上的readme有疑问再问问题

    效果

    • 安卓端:
       
    • IOS端:
       

    实践并总结一下各路大神的无私分享,谢谢各位授之于渔,如有雷同实属参照,改造工具没别的,跟着好的思路分享,就是干!非常感谢,期待大神们分享更多更好的工具思路。
    jar包放到Git上了jar包和具体使用说明

  • 相关阅读:
    学习进度——第十周
    梦断代码读后感03
    DFS入门——数的拆分
    DFS入门——素数环问题
    排列LCS问题
    洛谷P1436 棋盘分割 题解 二维区间DP
    洛谷P1241 括号序列 题解 栈
    《算法艺术与信息学竞赛》第1章 算法与数据结构 学习笔记
    洛谷P1563 玩具谜题(NOIP提高组2016 D1T1)题解 模拟
    洛谷P5022 旅行(NOIP提高组2018 D2T1)题解 贪心/去环
  • 原文地址:https://www.cnblogs.com/Ronaldo-HD/p/9915030.html
Copyright © 2020-2023  润新知