一、 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,如下图

  • 手机没有连接上的几种可能性:
  1. USB调试没有打开
  2. 对于模拟器来说,关闭后重新使用管理员权限打开可能就OK了
  3. 对于真机,如果提示设备offline,可能是手机没有授权(拔掉数据线重新插上,在弹出的授权页面选择确定)
  4. 对于真机,如果插上没有任何反应,说明真机驱动没有安装(手机和电脑连接需要一个驱动)。驱动安装——下载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自动化测试简介与环境搭建相关推荐

  1. Appium APP UI自动化测试框架介绍

    APP UI自动化测试同样可以使用unittest框架,与web的UI自动化类似 整个自动化流程介绍 1) 会先从手工用例里面抽离出要做自动化的用例,在测试用例里面会加一个执行方式的标签,标明是手动还 ...

  2. python 苹果试玩_(appium+python)UI自动化_01_自动化环境搭建【MAC版】

    Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...

  3. app ui ios airtest +python 环境搭建

    Android端Ui 自动化环境搭建 一,安装JDK.SDK 二,添加环境变量 Widows: 1.系统变量→新建 JAVA_HOME 变量 E:\Java\jdk1.7.0 jdk安装目录 2.系统 ...

  4. APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...

  5. UI层自动化测试框架(一)-简介和环境搭建

    大家好,本系列教程主要介绍基于Appium的UI层的自动化测试框架的设计和实践.我将平时的学习和工作的实践一一的总结下来,给初学者一点灵感和启发,如有不对的地方还请大家指出. 所谓UI层自动化,顾名思 ...

  6. 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看

    首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...

  7. xcode w情ndows版,第 1 章 简介和环境搭建

    第 1 章 简介和环境搭建 1.1 什么是编程语言 如果想控制计算机,你需要一种可以和计算机对话的方法.不像猫或狗那样有一套自己的神秘语言,计算机的语言是人类创造的.计算机程序是一段文本,就像一本书或 ...

  8. 《Web安全之机器学习入门》一 2.2 TensorFlow简介与环境搭建

    2.2 TensorFlow简介与环境搭建 TensorFlow是一个采用数据流图.用于数值计算的开源软件库(见图2-5).节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量 ...

  9. TensorFlow2.0(一)--简介与环境搭建

    简介与环境搭建 1. TensorFlow是什么 2. TensorFlow1.0与2.0架构 3. TensorFlow环境配置 1. TensorFlow是什么 TensorFlow是Google ...

最新文章

  1. java反射 int_java反射如何调用参数为int的方法?
  2. Spring【AOP模块】就是这么简单
  3. MySQL分库分表 mycat
  4. boost::reinterpret_pointer_cast相关的测试程序
  5. xiaocms 关于搜索功能 添加搜索字段
  6. create-react-app项目使用假数据
  7. fiddler如何设置过滤https_手把手教你如何给网站设置https
  8. 天池-街景字符编码识别4-模型训练与验证
  9. 局部加权线性回归(Locally weighted linear regression)
  10. 用js实现分页功能以及利用xml实现分页功能——数据岛
  11. 漫画 | 从搬家到容器技术 Docker 应用场景解析
  12. [codeVS1917] 深海机器人问题(费用流,拆边)
  13. mysql res.body_请帮我找一下错吧:body ?php $link=mysql_connect('localhost','root','123') or die (不能连接数据库...
  14. c++结构体学习笔记!
  15. 什么是servlet ,servlet的作用
  16. 美颜SDK的出现给直播和短视频平台带来了哪些影响?
  17. gazebo plugins
  18. 期刊、会议水平查询网站 声纳图像处理可以投稿的期刊和会议记录
  19. 国产loongarch64(龙芯)GCC的初体验
  20. Log4j 重写 RollingFileAppender 实现按日期生成文件夹文件名

热门文章

  1. 微信小程序开发个人博客高级篇
  2. 更具科技感的中塔机箱,模块设计兼容性强,鑫谷昆仑御风机箱上手
  3. 使用jQuery获取form表单数据并且打印在控制台
  4. 2022-11-28关键词扩充,文章自动生成,采集php源码,自动配图源码,SEO提高收录权重无限长尾词
  5. 互联网+企业行动指南(读书笔记)
  6. python编写的七夕
  7. CSS中设置字体样式的5种常用属性—让字体设置再无难点
  8. 电商中常见的高并发设计
  9. 求解显示常微分方程MATLAB,用matlab求解常微分方程
  10. 小伙用C/C++编程自制纸牌游戏引擎,拿到月薪30k!