1.常用自动化框架介绍

  • Robtium 
  •  基于anroid的一款开源自动化测试框 架

  支持java语言  

  不支持跨平台 

  •  macaca 

  由阿里巴巴公开开发的一套开源自动化解决方案 

  适用平台:PC端androidIOS 

  支持的语言:java、python、nodejs 

  适用平台:android、IOS 

  支持的语言:javaNjsphppython\C#\ruby

  社区活跃、资料丰富 

  • ppium的特点: 
  •   开源
  • 支持NativeApp(全部android sdk的java代码生成)原生的app如果页面有变更,就得发一版本,提交到应用商城去审核

     WebApo(都是由HTML5生成的)访问速度得。H5的代码以及元素信息

    Hybird APP(既有nativeapp也有H5的页面)混合app 是当前工作中用得最多的 

  • 支持andorid 、IOS
  • 支持跨平台、支持windows、linux、macos 
  • 支持多语言 java js python C# ruby

 

 

2.appium介绍

自动化原理

Automation Anywhere Community Edition 下载 automation app_包名

 

 

 

  • appium服务器
  • 基于python的appium客户端(appium-client-python)
  • adb(adb集成在android-sdk中)
  • JDK

 

⾃动化测试环境搭建

1、java安装

 双击可执⾏⽂件,安装过程中建议不要将安装⽬录设置在含有中⽂的⽬录。建议不要发装在系统盘中。 验证: 在DOS命令⾏中输⼊ java -version 如果能看下图所显示的信息就是正确的。

Automation Anywhere Community Edition 下载 automation app_包名_02

 

 

 

2、android SDK安装

 下载连接:https://android-sdk.en.softonic.com/?ex=MOB-593.7

  • 安装步骤:
  •   安装步骤: 解压android-sdk的压缩包⽂件
  • 将解压的⽬录复制到某⼀个⽂件夹下,⽂件夹的路径也不要包含 中⽂
  • 添加相应的环境变量(以下三个⽬录)

Automation Anywhere Community Edition 下载 automation app_android_03

 

 

 


 

 

Automation Anywhere Community Edition 下载 automation app_python_04

 

 

 

 

 在我的电脑右键属性--高级设置--环境变量,点击系统变量中path进行配置,进入后新建

Automation Anywhere Community Edition 下载 automation app_android_05

 

 

 

 

  • 验证:

1、在Power Shell命令⾏中输⼊ uiautomatorviewer 如果能显示以下图⽚,就说明是正常的

Automation Anywhere Community Edition 下载 automation app_android_06

 

 

 

2、在DOS命令⾏中输⼊: adb ,如果 能出现以下图⽚,就说明是正常

Automation Anywhere Community Edition 下载 automation app_包名_07

 

 

 

3、在DOS命令⾏中输⼊: aapt , 如果能出现发下图⽚,就说明是正常的

Automation Anywhere Community Edition 下载 automation app_包名_08

 

 

3、模拟器安装(略过)

 

 4、appium服务器安装

  • 双击appium服务器的可执⾏⽂件,默认安装在C盘。

Automation Anywhere Community Edition 下载 automation app_包名_09

 

 

 

appium验证

  • 启动服务之前,需要先配置jdk以及android-sdk的⽬录。

Automation Anywhere Community Edition 下载 automation app_python_10

 

 

  •  启动服务,如果能看到以下图⽚信息,说明安装正常

 

 

 

Automation Anywhere Community Edition 下载 automation app_android_11

 

 

 

 

5、appium-client-python安装

  • 安装⽅式
  • 离线 解压对应的安装包⽂件,进到解压⽬录下执⾏ python setup.py install
  • 在线 pip install Appium-Python-Client
  • pycharm
  • 验证是否安装
  •   pip show Appium-Python-Client
  •   pycharm

Automation Anywhere Community Edition 下载 automation app_包名_12

ADB工具

Automation Anywhere Community Edition 下载 automation app_包名_13

 

 

2.常用命令

1.首先打开MuMu模拟器,在设置中找到开发者选项,打开usb调试

Automation Anywhere Community Edition 下载 automation app_python_14

 

 

 2.找到连接adb的端口

Automation Anywhere Community Edition 下载 automation app_python_15

 

 

 

Automation Anywhere Community Edition 下载 automation app_包名_16

 

 

 

adb devices   查看手机设备的ID名称及状态

127.0.0.1:7555  手机设备的ID名称  device  处于在线状态

Automation Anywhere Community Edition 下载 automation app_android_17

 

 

 

获取包名和界面名

  • 操作步骤
  •   在手机或者模拟器打开app
  •       windows命令一:adb shell dumpsys window windows | findstr mFocusedApp(能看主界面)
  •   windows命令二:adb shell dumpsys window | findstr "usedApp" (可以看到打开app和主界面)

com.android.settings/Settings        com.androidsettings是包名,      .Settings是界面名通过/分隔包 

 

LINUX/MacOS命令一: adb shell dumpsys window windowsgrep mFocusedApp

LINUXMacOS命令二: adb shell dumpsys window lgrep "usedApp"

通过aapt获取app的包名和界面名

  •    aapt dump badging F:\anzhuangbao\app自动化工具集合\apk\xuechebu.apk后面表示的是app安装包的路径及名称

包名:package: name='com.bjcsxq.chat.carfriend'          #packagename后面的字符串表示的是app的包名

界面名: name='com.bjcsxq.chat.carfriend.module_main.activity.SplashActivity'        launchable-activity:name后面的字符串是界面

 

 

安装和卸载app

app安装 adbinstall路径/app安装包名称
app卸载 adbuninstall包名

上传下载文件

  • 上传将电脑上的文件上传到手机

adbpush电脑上的文件路径手机的路径
例子:adb push ./1.txt /sdcard

  • 下载文件从手机上下载文件到本地

adbpull 手机的文件路径电脑的文件夹路径
例子:adb pull /sdcard/1.txt D:\2.txt

 

 

 

 

查看日志信息

为什么要获取日志信息:用来给开发定位问题
adb logcat     来查看相关的日志信息

 

测试app的启动速度

测试app启动速度的命令:
adb shell am start -W 包名/界面名

(打开一个app,用db shell dumpsys window | findstr "usedApp" (可以看到打开app和主界面)查看包名/界面名,之后关闭app即可)

通过下面命令即可查看

Automation Anywhere Community Edition 下载 automation app_android_18

 

 需要大家关注的是TotalTlmie的时间值,那么在实际的测试过程当,会进行多次测试,然后取平均值

 

 

稳定性测试 (8⼩时)

  • monkey  集成在adb工具当中,主要用来做稳定性测试用的,monkey是通过java语⾔编写的⼀种稳定性测试⼯具。

  主要⽤来测试app会不会出现crash(崩溃)的情况

 

  相当于让⼀只猴⼦来随机操作app,所有的操作都有可能出现,⻓时间的操作来测试app会不会出

现问题。

 

  •  monkey常⽤的参数
  •   -p 参数 对指定的app进⾏随机操作

  adb shell monkey -p com.baidu.homework 100 (100次随机事件)

  

  • -v 参数 表示的是记录信息的级别

  level 0:adb shell monkey -p com.baidu.homework -v 100 默认级别

  level 1: adb shell monkey -p com.baidu.homework -v -v 100 打印出来的信息会⽐较详细,

  只打印跟本程序相关的⽇志信息

  level 2: adb shell monkey -p com.baidu.homework -v -v -v 100 打印出来的信息会更

  多,会显示出其他程序运⾏的信息

 

  • -s ⽤于指定伪随机数。如果两次的伪随机数相同,那么两次的操作步骤、流程、操作事件完全⼀样。

  主要的作⽤,就是⽤来复现上次的问题

  adb shell monkey -p com.baidu.homework -v -v -s 10 100

 

  • --throttle ⽤于指定随机事件的间隔时间, 单位是毫秒

  adb shell monkey -p com.baidu.homework -v -v --throttle 3000 -s 10 100

  组合使⽤:

  adb shell monkey -p com.baidu.homework --throttle 500 --pct-touch 10 --pct-motion 50 -v -

  v -s 100 300 > log.log

  --pct--touch 10 触模(10表示的是整个随机同件中的百分⽐)

  --pct-motion 50 滑屏(50表示的是整个随机同件中的百分⽐)

 

  • ⽇志分析

  如果在⽇志⾥⾯出现了 ANR(application not responsing),程序没有响应

  如果⽇志中出现了Exception,可能程序崩溃/异常退出。

Automation Anywhere Community Edition 下载 automation app_android_19

 

 adb手势操作

  •   模拟点击事件

adb shell input tap x y     #x y表示的是坐标点 参数之间用空格隔开

1.打开mumu模拟器,打开设置--开发者选项--指针位置打开

Automation Anywhere Community Edition 下载 automation app_包名_20

 

 

2.打开app,进行定位,执行 adb shell input tap 455 266

Automation Anywhere Community Edition 下载 automation app_android_21

 

 

  •   模拟滑屏事件

adb shell input swipe startx starty endx endy # startx, starty 表示的是起始点坐标,endx,endy表示的是终点坐标

1.首先找到有滑屏操作的页面并进行2次定位,第一次为开始位置,第二次滑动后的位置,最终实现滑动功能。

adb shell input swipe 435 473 411 809

Automation Anywhere Community Edition 下载 automation app_包名_22

                

Automation Anywhere Community Edition 下载 automation app_python_23

 

  •   模拟键盘操作

 

          adb shell input keyevent 键值 (3 表示的HOME键 4 表示的返回键 66表示的回⻋键)

 

 

  • 模拟输入操作

      adb shell input text 内容      内容表示要输⼊的内容,另外输⼊的内容不能是中⽂

Automation Anywhere Community Edition 下载 automation app_python_24

 

 

Automation Anywhere Community Edition 下载 automation app_包名_25

 

  • 如果出现上图中 offine的设备,记得重启一下adb服务
  • 如果电脑上面连接了多个模拟器或者是手机。name需要加上一个参数 -s device_name

      adb -s emulator -5554 shell input keyevent 4

我会试着放下往事,管他有多美