文章目录

  • 1. Appium简介
  • 1.1 特点
  • 1.2 组件
  • 2. Appium原理
  • 2.1 工作原理
  • 2.2 通信
  • 3. Appium运行过程
  • 3.1 运行过程
  • 4. 其他
  • 4.1 移动端系统自带自动化框架说明


1. Appium简介

1.1 特点

  • 开源
  • 支持IOS、Android自动化
  • 支持java、python、php、Ruby等语言
  • 继承自Selenium WebDriver,简化理解

1.2 组件

  • Appium Server
  • Appium框架的核心,基于Node.js实现的HTTP服务器。主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给bootstrap.jar(iOS手机为bootstrap.js)执行,并将命令的执行结果通过HTTP应答反馈给Appium客户端。
  • Appium Client
  • 实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发送到Appium服务器。Appium的测试是在这些Library的基础上进行开发.的。
  • Appium Desktop
  • 是Appium Server的图形界面,适用于Mac,Windows和Linux的开源应用程序。同事可以使用Inspector查看应用程序的元素。
  • bootstrap.jar
  • 过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理
  • 一个socket服务器,与Appium Server建立TCP连接,并监听4724端口过来的命令,并把命令发送给UiAutoamtor来执行处理。
  • Appium运行在安卓测试机的一个UIAutomator测试脚本,入口类bootstrap继承于UiautomatorTestCase,。

2. Appium原理

2.1 工作原理

  • PC端执行测试脚本,通过Appium client转换为json格式传递给Appium sever
  • Appium sever启动一个监听端口4724,同时向手机端adb push一个bootstrap.jar(Android)或bootstrap.js(IOS)的脚本,手机端通过该脚本监听4724端口。PC端和手机端就通过这个端口实现通信和交互,基于socket通信。
  • 手机端bootstrap.jar(Android)或bootstrap.js(IOS)通过4724端口接收到指令后,启动UIAutomator(Android)或UIAutomation(IOS)按指令执行测试,并通过4724端口返回测试结果到Appium sever。
  • Appium sever将返回结果通过端口4723再发送给Appium client。

2.2 通信

appium ios参数配置 appium介绍_android

3. Appium运行过程

3.1 运行过程

  1. 启动一个http服务器:127.0.0.1:4723
  2. 根据测试代码setUp()进行初始化,在http服务器上建立一个session对象
  3. 开始调用adb,找到连接上的设备,设置设备id
  4. 等待设备准备好响应命令
  5. 开启logcat日志监控
  6. 将生成的apk属性信息文件strings.json存到了设备 /data/local/tmp目录下
  7. 读取apk安装情况
  8. 端口映射,发给appium httpserver的内容,经过httpserver后直接发给设备forward tcp:4724 tcp:4724
  9. 将AppiumBootstrap.jar包存到设备的 /data/local/tmp目录下
  10. 安装UnicodeIME-debug.apk到设备上
  11. 安装settings_apk-debug.apk到设备上
  12. 安装unlock_apk-debug.apk到设备上
  13. kill所有的uiautomator进程
  14. 运行bootstrap—uiautomator runtest ***.jar –c ……-e……
  15. 在端口4724打开appium socket server
  16. 加载json,唤醒客户端
  17. 提交command到appium
  18. 启动设备,解锁屏幕,准备接收command
  19. 将响应结果返回给client
  20. 执行测试代码
  21. 关闭日志监控
  22. 关闭客户端链接
  23. 关闭Uiautomation
  24. 清理Android对象
  25. 清理appium session

4. 其他

4.1 移动端系统自带自动化框架说明

  • IOS
  • 9.3版本以上:XCUITest
  • 9.3版本以下:UIAutomation
  • Android
  • 4.2版本以上:UiAutomator,新版本支持UIautoamator2
  • 4.2版本以下:Instrumentation