Appium APP UI自动化测试简介与环境搭建
一、 app自动化测试背景
- 移动终端越来越多,手机应用也越来越多
- App回归测试用例越来越多,但全量回归很消耗时间
- 移动端碎片化严重,尤其是Android端(兼容性就是碎片化的体现,有很多厂商、机型、版本)
- 机型多,自动化测试可减少兼容性测试工作
为了减少这种重复的、大量回归的测试任务,我们迫切需要引进一些自动化测试来协助
二、 appium自动化测试简介
1. 概念
appium是一个开源的、免费的,适用于以下自动化测试框架:
1)原生:native,完全用安卓自带的一些原生组件去开发的,流畅性高
2)混合移动应用:hybrid,在原生中嵌入了一些h5页面,类似手机中的web页面一样。
appium应用webdriver:JSON wire protocol驱动安卓和IOS移动应用
扩展:
1)H5:相当于手机中的web页面
2)为什么要嵌入H5:因为最早的Android开发机制是开发一个界面以后需要打成一个APP,上传到各大应用市场,用户才能够下载应用,这种方式需要各大应用市场的审核时间,是比较耗时的,可能导致应用失去时效性。H5页面就像web页面,只需要后台启动就能生效
3)能否将所有的页面都做成H5?不可以,因为H5的性能比较差,体验性会差一点
2. appium特点
- 支持多平台:Android、IOS等(一套代码不能同时跑安卓和苹果,因为安卓和苹果的一些控件定位和操作是不一样的,但可以使用同一套框架)
- 支持多语言(Python、Java、Ruby、JS、C#等)
- 跨平台,可以在MAC/Windows以及Linux桌面系统上运行
- 对于安卓:可以在MAC、Windows、Linux上搭建自动化测试框架
- 对于IOS:只能在MAC上搭建(因为要使用底层的一些工具)
- Appium选择了client/server的设计模式,只要client能够发送HTTP请求给server,那么client使用什么语言来实现都可以(即支持多语言)
- Appium扩展了webdriver的协议,以前的webdriver API能够直接被继承过来,以前的selenium(webdriver)各种语言的binding都可以拿来直接使用,省去了为每种语言开发一个client的工作量。
3. Appium底层工作原理
通过写代码在客户端(client)发起一个请求,请求就会到appium server端,appium server就会打一个bootstrap.jar包,并将其打到手机里面,通过bootstrip去转发、分析指令,然后去调用uiautomator底层的一些框架,然后把要调用的一些控件的ID、属性、方法等传进去,uiautomator自身就有一些实现自动化的动作,从而去操作整个APP
在appium中过程如下:
4. Appium的哲学
- 开源免费
- 不需要重新编译或者修改应用(不需要对apk源码进行修改,可直接进行自动化测试)
- 不被一种语言或者框架约束
- 不重复造轮子
5. 市面上常见的自动化测试框架
- Monkeyrunner:使用Python实现,更多实现的是对坐标的点击,维护性差
- Monkeytalk:基于控件定位,只支持js代码(需要往APP里插入一些代理,可能会使APP出问题)
- Robotium:基于控件定位,只支持Java语言,也支持混合移动应用(需要重签名)
三、 appium自动化测试环境搭建
1. Python安装
之前已经安装过,此处直接进行第二步
2. JDK环境变量配置
1) 下载并安装jdk,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2) 环境变量配置
安装完成后我的电脑系统变量新建用户变量,变量名:JAVA_HOME ,变量值:C:\Program Files\Java\jdk1.8.0_261 (java的安装路径)。并在系统变量path中加入%JAVA_HOME%\bin
3) 验证JDK环境是否OK
按windows+R,输入cmd,输入java –version,验证如下图即OK
3. SDK环境变量配置
1) 下载并安装SKD,国内下载地址:http://www.androiddevtools.cn/
2) 环境变量配置
新建系统变量,变量名: ANDROID_HOME,变量值:D:\xuehai\tools\sdk(根据你电脑sdk实际的位置确定)。并在系统变量path中加入%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools
同jdk操作类似,此处不再赘述
3) 验证SDK环境是否OK,在cmd中输入adb,返回adb的一些命令
4. 下载nodejs 并配置环境变量
1) 下载地址:http://www.nodejs.org/
下载之后默认安装即可(也可自定义安装路径)
2) 环境配置
将node安装路径D:\Program Files\nodejs(具体根据你安装的路径决定)添加到环境变量Path中
3) 验证nodejs环境是否OK
cmd中输入node –v或npm –v,如下图:
5. 下载安装appium
1) 下载地址:appium.io 有对应的downloads地址
2) 安装,直接双击安装包进行安装
3) 安装完成后打开appium,界面如下:
进入之后appium如下图显示,说明处于监听状态
- 注意:
win7的同志们可能会遇到安装好后死活也打不开appium的问题(我就遇到了),这可能是因为兼容性问题,可找到appium.exe,然后右击选择属性,在兼容模式下选择Windows7(亲测有效),然后就可以打开了
6. 安装其他依赖库
在cmd下输入如下命令:
pip install selenium
pip install Appium-Python-Client
7. 安装模拟器
对于逍遥模拟器,安装之后,在cmd里面输入adb devices,如果有设备,即说明环境OK,如下图
- 手机没有连接上的几种可能性:
- USB调试没有打开
- 对于模拟器来说,关闭后重新使用管理员权限打开可能就OK了
- 对于真机,如果提示设备offline,可能是手机没有授权(拔掉数据线重新插上,在弹出的授权页面选择确定)
- 对于真机,如果插上没有任何反应,说明真机驱动没有安装(手机和电脑连接需要一个驱动)。驱动安装——下载91助手,会自动安装驱动。
- 注意:如果出现adb的版本不匹配,可以将F:\sdk\platform-tools目录下的三个文件复制到(覆盖)D:\Program Files\Microvirt\MEmu(逍遥模拟器)中
8. 验证环境是否OK
1) 打开模拟器,在模拟器上安装最右app
2) 打开appium
3) 打开pycharm,运行以下代码
from appium import webdriverdesired_caps = {}
desired_caps['platformName'] = 'android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'cn.xiaochuankeji.tieba'
desired_caps['appActivity'] = '.ui.base.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
driver.implicitly_wait(40)
driver.find_element_by_id('cn.xiaochuankeji.tieba:id/iconTabItem')[1].click()
如果最右APP被启动,且appium有打印输出则说明环境OK
Appium APP UI自动化测试简介与环境搭建相关推荐
- Appium APP UI自动化测试框架介绍
APP UI自动化测试同样可以使用unittest框架,与web的UI自动化类似 整个自动化流程介绍 1) 会先从手工用例里面抽离出要做自动化的用例,在测试用例里面会加一个执行方式的标签,标明是手动还 ...
- python 苹果试玩_(appium+python)UI自动化_01_自动化环境搭建【MAC版】
Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...
- app ui ios airtest +python 环境搭建
Android端Ui 自动化环境搭建 一,安装JDK.SDK 二,添加环境变量 Widows: 1.系统变量→新建 JAVA_HOME 变量 E:\Java\jdk1.7.0 jdk安装目录 2.系统 ...
- APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...
- UI层自动化测试框架(一)-简介和环境搭建
大家好,本系列教程主要介绍基于Appium的UI层的自动化测试框架的设计和实践.我将平时的学习和工作的实践一一的总结下来,给初学者一点灵感和启发,如有不对的地方还请大家指出. 所谓UI层自动化,顾名思 ...
- 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...
- xcode w情ndows版,第 1 章 简介和环境搭建
第 1 章 简介和环境搭建 1.1 什么是编程语言 如果想控制计算机,你需要一种可以和计算机对话的方法.不像猫或狗那样有一套自己的神秘语言,计算机的语言是人类创造的.计算机程序是一段文本,就像一本书或 ...
- 《Web安全之机器学习入门》一 2.2 TensorFlow简介与环境搭建
2.2 TensorFlow简介与环境搭建 TensorFlow是一个采用数据流图.用于数值计算的开源软件库(见图2-5).节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量 ...
- TensorFlow2.0(一)--简介与环境搭建
简介与环境搭建 1. TensorFlow是什么 2. TensorFlow1.0与2.0架构 3. TensorFlow环境配置 1. TensorFlow是什么 TensorFlow是Google ...
最新文章
- java反射 int_java反射如何调用参数为int的方法?
- Spring【AOP模块】就是这么简单
- MySQL分库分表 mycat
- boost::reinterpret_pointer_cast相关的测试程序
- xiaocms 关于搜索功能 添加搜索字段
- create-react-app项目使用假数据
- fiddler如何设置过滤https_手把手教你如何给网站设置https
- 天池-街景字符编码识别4-模型训练与验证
- 局部加权线性回归(Locally weighted linear regression)
- 用js实现分页功能以及利用xml实现分页功能——数据岛
- 漫画 | 从搬家到容器技术 Docker 应用场景解析
- [codeVS1917] 深海机器人问题(费用流,拆边)
- mysql res.body_请帮我找一下错吧:body ?php $link=mysql_connect('localhost','root','123') or die (不能连接数据库...
- c++结构体学习笔记!
- 什么是servlet ,servlet的作用
- 美颜SDK的出现给直播和短视频平台带来了哪些影响?
- gazebo plugins
- 期刊、会议水平查询网站 声纳图像处理可以投稿的期刊和会议记录
- 国产loongarch64(龙芯)GCC的初体验
- Log4j 重写 RollingFileAppender 实现按日期生成文件夹文件名