详解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的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python json转字典字符方法实例解析
Apr 13 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
python脚本定时发送邮件
Dec 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
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
Python正则表达式介绍
2012/08/06 Python
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python装饰器用法实例总结
2018/05/26 Python
Django中使用Celery的方法示例
2018/11/29 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Django ModelForm操作及验证方式
2020/03/30 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
如何利用Python写个坦克大战
2020/11/18 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
领导班子整改措施
2014/10/24 职场文书
2014年超市工作总结
2014/11/19 职场文书
整改通知书格式
2015/04/22 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python