Appium 日志分析,深入剖析 Appium 实现原理

本贴最后更新于 1399 天前,其中的信息可能已经水流花落

前言

在新版本的Appium中,很多的小伙伴们都发现了Appium底层的自动化引擎已经默认为UIAutomator2了,那么UIAutomator2与UIAutomator有什么区别呢?

既然现在Appium默认使用UIAutomator2引擎去实现Android端的自动化操作,那么对于其底层原理的实现我们有必要做了解,这样当碰到问题的时候也不会不知所措。

Appium在和客户端及手机端进行通讯的时候会输出很多日志,通过日志我们可以知道Appium在初始化过程中做了哪些事情。接下来我们开始逐行进行分析:

  1. 启动Appium服务,端口和工作地址信息image.png
  2. 向Appium服务发起一个post接口请求,请求的数据包含客户端发送过来的DesiredCapalities配置。Appium会对应创建一个session,这个session用于后面客户端和Appium服务通讯使用image.png
  3. 这里告诉我们在Appium V1.13版本之前默认引擎为UIAutomator,较新版本Appium(V1.14)现在的默认引擎为UIAutomator2image.png
  4. 检测Android SDK的环境,包括build-tools组件、adb等等。并且还会通过adb获取当前连接的设备情况,包括设备的API版本、设备是否在线等等。image.png
  5. 检测Appium Settings应用是否有安装image.png
  6. 将Settings应用从Appium本地目录推送到手机端,并且进行安装image.png
  7. 启动Appium Settings应用image.png
  8. 检查设备中是否有安装io.appium.uiautomator2.server应用,发现没有image.png
  9. 检查io.appium.uiautomator2.server应用的签名情况:会通过Android SDK的build-tools目录下的apksigner.bat对APK的签名进行检测,这里检测通过。
    image.png
  10. 以同样的方式检测应用io.appium.uiautomator2.server.test是否安装->签名
    image.png
  11. 安装应用io.appium.uiautomator2.servert和io.appium.uiautomator2.server.test
    image.png
  12. 端口转发,将Appium本地的8200端口和设备端的6790端口建立映射,此后Appium和设备端通过这条链路进行通讯。
    image.png
  13. 检测被测应用的安装状态,停止被测应用,清除被测应用的数据
    image.png
  14. 停止io.appium.uiautomator2.server.test应用,通过adb shell am instrument启动该应用,通过instrument可以启动测试套件执行测试。
    image.png
  15. 启动被测应用
    image.png
3 操作
shakebabe 在 2021-02-25 16:51:04 更新了该帖
shakebabe 在 2021-02-25 16:49:59 更新了该帖
shakebabe 在 2020-08-06 17:23:25 更新了该帖
1 回帖
请输入回帖内容 ...
  • biyeren
    appium上面说的这些日志都有,调起应用后闪退是怎么回事呢,这个问题困扰我好长时间了?