项目介绍

二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能。兼容IOS安卓。

软件架构

github 地址:觉得不不错的老铁,给个双击,Git上star 一下。有问题Issue反馈一下。工具---》地址(https://github.com/512433465/autotest_helper)

软件架构

本工具以安卓SDK自带uiautomatorviewer为源码基础,在此上进行深度二次开发。

  • 优化定位符Xpath生成,提取相对短的Xpath,解决自带工具Xpath太长不友好的问题
  • 修复自带uiautomatorviewer截图报错,无法截图的Bug
  • 优化截图速度优化获取Xml速度,至少减少原截图耗时的一半
  • 支持生成Java,Python自动化代码,实现类似录制脚本功能,生成后只需Ctrl+C,Ctrl+V到自己的代码中即可运行
  • 兼容IOS,安卓,支持真机以及模拟器,你无需要换工具安卓平台和Mac平台都可以使用此工具
  • 优化删除IOS的Xml中的垃圾空节点,定位元素更清爽

安装教程

  1. 本工具和SDK自带Jar相同无需安卓。前提是您Mac或者Windows系统中已经安装并且配置好了Java1.8环境
  2. Windows环境,复制该jar到您SDK安装目录uiautomatorviewer.jar所在的目录下(请先备份你原来的jar,一般目录在SDK的tools\lib下:\android-sdk-windows\tools\lib)
  3. Mac环境,复制该jar到任意目录即可
  4. 安卓自动化:
  • 复制LvmamaXmlKit.jar到本地D盘根目录下,打开命令行窗口执行命令:adb push D:\LvmamaXmlKit.jar /data/local/tmp/
  • 打开手机文件管理,到 /data/local/tmp/目录下,检查确保LvmamaXmlKit.jar是否复制到手机中(如图1)
  • 模拟器中安装ADBKeyBoard.apk并设置设置默认输入法为ADBKeyBoard,并关闭硬件物理键盘(如图2)
  • 打开您的app,点击uiautomatorviewer.bat 开启生成代码之旅。

图1:LvmamaXmlKit.jar推送成功与否检查示例

图2:硬件物理键盘关闭与否检查示例

2,使用说明

本工具基于安装自带的uiautomatorviewer进行二次开发,主要优化xpth提取,支持选取短的相对xpath,同时支持全部索引xpath定位,以及基于UiSelector的定位。选取元素后,增加右键菜单,提供了,常用的点击,输入,长按,等待,查找元素,按键等代码的生成。使用本工具前请先确认adb 是否能连上您的设备,如未连上,请百度自行解决谢谢!

  1. Windows环境,和自带的uiautomatorviewer启动方式相同,找到您SDK安装目录的uiautomatorviewer.bat(一般目录在SDK的tools下:\android-sdk-windows\tools)双击启动即可
  2. Mac环境,打开shell终端,1,输入cd xxx 进入你uiautomatorviewer.jar所放置的目录,回车,2:输入命令:java -XstartOnFirstThread -jar uiautomatorviewer.jar即可启动
  3. 根据您项目需要,选择您要生成代码的语言(如图3)

图3:语言选择示例 

Python代码生成示例

  • 选择Python,选中画面元素
  • 选择Click-->id:类似不再重复截图,欢迎尝试 选择Xpath:driver.find_element_by_xpath("//android.widget.ImageView[@content-desc='国内游']").click() 选择ID:driver.find_element_by_id("com.gift.android:id/search_edit").click() 选择desc:driver.find_element_by_accessibility_id("境外门票").click() 选择class:driver.find_element_by_class_name("android.widget.TextView").click() 选择text:driver.find_element_by_name("玩水季").click()

Java代码生成示例

  • 如上图,点击门票后,右击,弹出菜单,选择Click时,弹出ClickBy菜单,选择xpth 时,会生成driver.findElement("//android.widget.ImageView[@content-desc='门票']","xpath").click();

  • 同步点击手机,选择Click(Reshot),或者Longpress(Reshot)菜单时,会同步点击模拟器,并重新截取屏幕。

  • 同步输入,选择input时,会在手机控件同步输入。更多使用方法期待您的发现,如使用中有任何问题,欢迎讨论交流!

测试交流论坛:https://testerhome.com/ 工具交流QQ群:610460807

uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码的更多相关文章

  1. Py福利,基于uiautomatorviewer 的Python 自动化代码自动生成工具分享(jar已发布GitHub,欢迎Star)

    前言做UI自动化无论你用SDK自带的uiautomatorviewer还是Macaca还是Appium自动的inspector,代码最多的就是那些繁琐重复的找元素后点击,输入,长按.....等.现在偷 ...

  2. git +maven+java+jenkins自动化代码持续集成

    1.安装JDK JDK下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 新 ...

  3. python自动化之使用allure生成测试报告

    Allure测试报告框架帮助你轻松实现"高大上"报告展示.本文通过示例演示如何从0到1集成Allure测试框架.重点展示了如何将Allure集成到已有的自动化测试工程中.以及如何实 ...

  4. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  5. AIDE支持实时错误检查、代码重构、代码智能导航、生成APK

    AIDE是一个Android Java集成开发环境,可以在Android系统内进行Android软件和游戏的开发.它不仅仅是一个编辑器,而是支持编写-编译-调试运行整个周期,开发人员可以在Androi ...

  6. 如何在IJ中使用Jaxb2通过xml定义生成对应的Java Entity类的文件

    #0. 准备要转换的xml文件,在Project视界中,右击这个xml文件,在弹出的菜单上选择“Generate XSD schema from XML File...”, 按默认设置生成xsd文件. ...

  7. 一键自动生成 java junit 测试代码神器 gen-test-plugin 入门介绍

    gen-test-plugin 我们日常编写代码的过程中,经常需要为代码编写测试案例. 随着对代码质量的要求越来越高,很多公司开始通过代码的测试覆盖率作为 QA 的一个评定指标. 本框架可以一键生成所 ...

  8. 利用在线工具根据JSon数据自动生成对应的Java实体类

    如果你希望根据JSon数据自动生成对应的Java实体类,并且希望能进行变量的重命名,那么“JSON To Java”一定适合你.(下面的地址需要FQ) https://jsontojava.appsp ...

  9. Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码

    在<Java与WCF交互(一):Java客户端调用WCF服务>一 文中,我描述了用axis2的一个Eclipse控件生成WCF的Java客户端代理类,后来有朋友建议用Xfire.CXF,一 ...

随机推荐

  1. idea激活方式

    idea破解方法:转自https://note.youdao.com/ynoteshare1/index.html?id=d0f3fb42bfa1bb65a33115a1b6140f5f&ty ...

  2. web前端面试题题目

    一.各种浏览器兼容的前缀:-o-(Opera),-ms-(IE): -moz-(火狐):-webkit-(chrome) 二.存在兼容性的css属性:placeholder,主要是因为各种浏览器pla ...

  3. 项目总结20:阿里云免费https证书申请

    项目总结20:阿里云免费https证书申请 1. 登录阿里云控制台 www.aliyun.com,用账户信息登录 2. 在”产品与服务”搜索SSL,选择SSL证书 3. 点击购买证书 4. 选择” S ...

  4. django filter or 多条件查询

    功能:django中实现多条件查询 或关系: from django.db.models import Q return qs.filter(Q(notice_to_group__contains=' ...

  5. 微信支付遇到的坑---缺少参数total_fee

    今天在做微信砍价成功后支付,出现了这个报错 看到报错后,去找total_fee这个参数,调试了半天,total_fee是确定有值的 微信支付的步骤 ① 预支付 商户号,商户秘钥,appid,appse ...

  6. Solidity-让合约地址 接受ETH的转账充值的 三种方式

    以太坊智能合约开发:让合约接受转账 在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢? 有三种方式: 部署合约时转账 调用合约提供的方法 直接向合约地址进 ...

  7. 如何解决出现AXIOS的跨域问题:Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

    转载:https://www.cnblogs.com/caimuqing/p/6733405.html 问题描述: 由于restful接口需要在头部header传递两个字段: Content-Type ...

  8. mysql启动服务

    mysql.server start 启动mysql服务mysql.server stop 停止mysql服务 mysql密码:123456Az_

  9. Python MD5算法使用

    ## md5算法简介 1.  **简介**   MD5消息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值 ...

  10. linux 学习之路:ls命令使用

    1.命令格式: Ls 显示指定工作目录下的目录内容 语法:ls [-alrtAFR] [name...] 2.命令参数: 3.命令功能: 显示列出目前工作目录所含之文件及子目录 4.命令范例: 列出根 ...