详解appium自动化测试工具(monitor、uiautomatorviewer)


Posted in Python onJanuary 27, 2021

appium 是一个自动化测试开源工具,支持iOS和 Android平台上的原生应用,web应用和混合应用。

  • 移动原生应用:单纯用ios或者android开发语言编写的、针对具体某类移动设备、可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app;
  • 移动web应用:使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的Chrome),不需要下载到设备上,而是通过浏览器直接访问,比如H5九曲封神游戏;
  • 混合应用:同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用,比如手机上的淘宝客户端

获取应用信息:

from appium import webdriver
desired_caps ={}
desired_caps['platformName']='Android'# 哪种移动平台
desired_caps['platformVersion']='4.2' #设备版本号
desired_caps['deviceName']='Android Emulator' #设备是模拟机
desired_caps['appPackage']='com.android.calculator2' #待测试的app的java package
desired_caps['appActivity']='.Calculator' #待测试的app的activity名字
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #

讨论:webdriver.Remote实际上就是原生webdriver的子类,另外Remote()构造函数的第一个参数中需要显示指定appium server监听的端口

1、monitor.bat(获取app的package&activity)

该文件位于your_andriod_sdk_path\tools下面。

该工具可以帮我们找到android控件的content-description,为以后的find_element_by_accessibility_id 定位方法做参数使用。

详解appium自动化测试工具(monitor、uiautomatorviewer)

2、uiautomatorviewer.bat(获取app的package和控件属性)

该文件位于your_andriod_sdk_path\tools下面。

该工具主要用来查看控件的属性,比如resource id,class name等。

该工具也可查看被测app的appPackage(Desired Capabilities中使用)。

详解appium自动化测试工具(monitor、uiautomatorviewer)

3、获取activity名字

1、直接看源码,推荐;

2、反编译

如果没有代码,那么可以反编译该app。

这里将用到2个工具,分别是dex2jar和jd-gui。

以工具包里的ContactManager.apk为例,简单介绍一下反编译的流程。

1,重命名ContactManager.apk为ContactManager.zip并解压得到文件classes.dex;

2,解压dex2jar-0.0.9.15.zip,并从命令行进入该文件夹;C:\appium\apk反编译\dex2jar-0.0.9.15

3,运行命令d2j-dex2jar.bat  C:\appium\apk反编译\com.meijialove.activity-1\classes.dex,在当前文件夹下得到classes-dex2jar.jar;

4,解压jd-gui-0.3.6.windows.zip得到文件jd-gui.exe;

5,使用jd-gui.exe打开classes-dex2jar.jar;

详解appium自动化测试工具(monitor、uiautomatorviewer)

3、查看log,发现在Android Devices Monitor的log可以看到activity的名字

详解appium自动化测试工具(monitor、uiautomatorviewer)    

到此这篇关于详解appium自动化测试工具(monitor、uiautomatorviewer)的文章就介绍到这了,更多相关appium自动化测试工具内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用Python遍历C盘dll文件的方法
May 06 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
Python项目跨域问题解决方案
Jun 22 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
Django基础CBV装饰器和中间件
Mar 22 Python
Python利用socket模块开发简单的端口扫描工具的实现
Jan 27 #Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 #Python
python利用appium实现手机APP自动化的示例
Jan 26 #Python
python 基于opencv去除图片阴影
Jan 26 #Python
python中用ggplot绘制画图实例讲解
Jan 26 #Python
python中altair可视化库实例用法
Jan 26 #Python
用Python制作音乐海报
Jan 26 #Python
You might like
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
Es6 Generator函数详细解析
2018/02/24 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
12步教你理解Python装饰器
2016/02/25 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
详解如何使用Python编写vim插件
2017/11/28 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
Python面向对象编程基础实例分析
2020/01/17 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
ASP.NET Core中的配置详解
2021/02/05 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
法国在线药房:DoctiPharma
2020/10/21 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
新闻传媒系求职信范文
2014/04/19 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技