【工具引入】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\tools\lib】下(请先备份您自带的),启动方式猛击【\android-sdk-windows\tools\uiautomatorviewer.bat】
- IOS位置任意位置:shell终端执行: java -XstartOnFirstThread -jar uiautomatorviewer.jar -XstartOnFirstThread(ios使用时,请先确保你用appium的inspector是可以抓取元素的)
具体使用方式请参照Git上详细使用说明,这里不赘述了。请务必先看完Git上的readme有疑问再问问题
效果
- 安卓端:
- IOS端:
实践并总结一下各路大神的无私分享,谢谢各位授之于渔,如有雷同实属参照,改造工具没别的,跟着好的思路分享,就是干!非常感谢,期待大神们分享更多更好的工具思路。
jar包放到Git上了jar包和具体使用说明
【工具引入】uiautomatorviewer 查找元素后自动生成代码的更多相关文章
- 使用MyBatis Generator 1.3.7自动生成代码
MyBatis Generator是一款mybatis自动代码生成工具,可以通过配置后自动生成文件. MyBatis Generator有几种方法可以生成代码,下面是其中一种. 一.官网下载 MyB ...
- Python自动生成代码工具
项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...
- mybatis自动生成代码工具(逆向工程)
MyBatis自动生成实体类(逆向工程) MyBatis属于一种半自动的ORM框架,它需要我们自己编写sql语句和映射文件,但是编写映射文件和sql语句很容易出错,所以mybatis官方提供了Gene ...
- mybatis自动生成代码插件mybatis-generator使用流程(亲测可用)
mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间 坐着在idea上用maven构建spri ...
- mybatis 自动生成代码(mybatis generator)
pom.xml 文件配置 引入 mybatis generator <properties> <mysql.connector.version>5.1.44</mysql ...
- 【MyBatis】MyBatis自动生成代码查询之爬坑记
前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...
- IDEA Maven Mybatis generator 自动生成代码
IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...
- Eclipse 使用mybatis generator插件自动生成代码
Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...
- MyBatis使用Generator自动生成代码
MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...
随机推荐
- 【JEECG技术文档】Online唯一校验使用说明
1.功能介绍 配置了唯一校验的字段,在录入和编辑页面中,动态查询用户输入值是否存在校验. 要使用online唯一校验功能必须先在online表单开发中配置唯一字段的校验方式为唯一校验. 2.配置唯一校 ...
- Git 全局配置查看修改
查看 git config --list git config --global --list 新增 git config --global user.emal=123 删除 git config - ...
- C++ new 和malloc 区别
1.分配地方不同,malloc是堆上面,new是自由存储区域 2.malloc/delete是函数,new/delete是操作符,可以重载 3.malloc 要指定大小,返回的是void*指针,开辟的 ...
- [CI]CodeIgniter视图 & 模型 & 控制器
---------------------------------------------------------------------------------------------------- ...
- 解决运行wamp提示“MSVCR110.dll”丢失的问题!
我在Windows系统上安装wampserver2.5 64位,安装到最后,总是提示丢失msvcr110.dll 解决办法: 到这个网站下载一个Visual C++ Redistributable f ...
- python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)
-*- paramiko.util.log_to_file( ssh = paramiko.SSHClient() ssh.set_missing ...
- C# Excel转换为Json
demo:https://files.cnblogs.com/files/guxingy/Excel%E8%BD%AC%E6%8D%A2%E4%B8%BAJson%E5%AF%B9%E8%B1%A1. ...
- C#关键字as出现的错误
ObjectCache cache = MemoryCache.Default; string cacheData1 = cache["key1"] as string;//得不到 ...
- 吴裕雄 30-MySQL 及 SQL 注入
如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题.本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符.所谓SQL注入,就是通过 ...
- EMbedding
FNN模型:非端到端 输入 --> 特征onehot --->FM 模型--->输出每个特征权重及因子值 ----> 输入神经网络 ----> 输出每个预测值 此为一 ...