详解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中用于求最小值的min()方法
May 15 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
详解python配置虚拟环境
Apr 08 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python3 下载网络图片代码实例
Aug 27 Python
为什么说Python可以实现所有的算法
Oct 04 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP常用函数小技巧
2008/09/11 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python写入已存在的excel数据实例
2018/05/03 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
python开发游戏的前期准备
2019/05/05 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
如何卸载python插件
2020/07/08 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
python递归函数用法详解
2020/10/26 Python
python全栈开发语法总结
2020/11/22 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
市场调研项目授权委托书范本
2014/10/04 职场文书
2015年项目工作总结
2015/04/29 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android