移动端自动化测试:Appium

一、Appium

1. Appium介绍

  • Appium是一个开源移动端自动化测试的框架,可用于原生,混合和移动Web应用程序测试。他使用WebDriver协议驱动iOS,Android和Windows应用程序,使用方式和selenium类似(继承)
  • 优势
    • 可以跨平台同时支持Android,iOS
    • 支持多种语言,java,Python,PHP,Ruby等
  • 工作流程:Appium-client->Appium-server->移动设备
    移动端自动化测试:Appium
  • C/S框架,Appium核心是一个Web服务器,提供了一套接口。他会接受客户端发送过来的命令,然后再移动设备上运行命令,最后把运行结果通过HTTP响应返回给客户端。
  • session,每个client连接到server以后都会创建一个session,自动化始终围绕一个session进行。
  • 官网
  • 官方中文介绍
  • Appium/Python-Client使用文档

2.搭建环境

  • 安装JDK(Android SDK依赖)
    • 安装软件并配置环境变量
    • 终端敲java -version有结果证明安装成功
  • 安装Android SDK(Appium)
  • android-sdk
  • android-studio
    • 安装软件并配置环境变量
      移动端自动化测试:Appium

    • 终端敲adb,有结果证明安装成功

  • 模拟器(手机)安装
    • 手机要开开发者模式,开启调试
    • 模拟器开手机模式,有网络
    • 终端敲adb devices,有结果证明安装成功
  • adb连接(Android SDK中的一个工具)
    • 连接模拟器(手机)
  • Appium安装
    • 安装Appium软件(服务器)
    • Appium服务器
    • 安装Appium-Python-Client(写代码)
    • pip install Appium-Python-Client

3. ADB调试工具

3.1 ADB介绍

  • adb(Android Debug Bridge)一个Android调试工具,使用ADB可以直接操作管理Android模拟器或者手机
  • 通过命令操作
    移动端自动化测试:Appium
    *Client端:运行在开发机器(电脑),用于发送adb命令
    Damon守护进程:运行在调试设备中,模拟器(手机),用于接收adb命令
    Server端:运行在开发机器中,用来范例Client端和手机的Damon之间的通信

3.2 ADB常用命令

移动端自动化测试:Appium
AndroidKeyCode键盘值:
https://www.cnblogs.com/yutingliuyl/p/7121668.html
回车键:driver.press_keycode(66)

4. 元素定位工具

  • Android SDK自带元素定位工具,通过截屏并分析XML布局文件的方式,为用户提供控件信息查看服务
  • 工具说明
    • uiautomatorviewer
    • monitor
  • 工具路径
    • Linux: sdk目录下的tools/bin
    • Windows: sdk目录下的tools

4.1使用步骤

  • 双击
  • 通过终端命令行

4.2【掌握】元素定位工具的使用

  1. 保证手机已经连上,通过adb devices
  2. 打开元素定位工具
  3. 定位元素
    注意
  • 自动打开的命令窗口不要关
  • 打开工具闪退,说明jdk版本过高
  • 软件报错
    移动端自动化测试:Appium
    monitor: 软件图标找不到,重置
    移动端自动化测试:Appium

5. 快速入门

5.1【掌握】测试环境是否正常

  1. 保证手机已经连上(开启开发者调试模式,允许调试),通过adb devices
  2. 启动服务,服务依赖JDK,AndroidSDK环境变量
  3. 拷贝验证代码,修改安卓版本

5.2【掌握】快速入门

  1. 保证手机已经连接,打开需要测试的app
  2. 通过adb命令找到,启动软件的包名,界面名
    移动端自动化测试:Appium
    移动端自动化测试:Appium
  3. 验证是否能启动这个软件
  4. 定位元素,操作指定的元素
  5. 写代码
    • 启动软件,包名,界面名
    • 包名,界面名放在代码的配置信息
    • 自动化代码
      • 定位元素,操作元素
    • 关闭driver