Appium UiAutomator2 Server 运行原理分析

charles0427 · 2017年07月04日 · 最后由 cheung 回复于 2018年10月14日 · 4705 次阅读

这里分享外网一篇文章,对 Appium UiAutomator2 Server 的工作原理作了很详细的介绍

原贴: How Appium UIAutomator2 Server Works

简单概括一下:

ps. 我们都知道 appium 只有在 uiautomator2 下可以实现对 toast 的识别,那是因为 Google 新增了 AccessibilityService 服务,重写该服务可以实现对 Notification 和 Toast 内容的捕捉

appium-uiautomator2-server

  • 通信模块使用了 Netty Server,较之 bootstrap 使用的 ServerSocket,Netty 是一个高性能、异步驱动的 NIO 框架,占用内存少,性能更好。

运行原理

  • 客户端通过传递 desired capabilities 给 appium node server 来创建一个 session, appium server 根据automationName去启动对应的 driver,默认是 android-driver。
  • automationName设为UIAutomator2,appium 会调用appium-uiautomator2-driver,同时将 uiautomator2 server 的两个 apk 安装到测试设备上
    1. appium-uiautomator2-server-vx.x.x.APK,执行 handlers
    2. appium-uiautomator2-server-debug-androidTest.apk,只有一个test,用于启动 server

  • AppiumServlet ,管理请求的路由,将 driver 发过来的请求转发给对应 Handler.
  • Handler,调用 UiAutomator V2 去执行指定操作,操作的结果经 AppiumResponse 统一封装
  • AppiumResponse,操作结果返回给 appium-uiautomator2-driver,再将结果返给客户端
共收到 11 条回复 时间 点赞

不错噢,在 github 上面有编译和安装的方法啊,呐,链接如下:
https://github.com/appium/appium-uiautomator2-server

bauul 回复

😅 啊勒,这我都没仔细看= =

赞啊,找来好多的资料,都没有比较全面的 uiautomator2 + android studio 的一个环境搭建和使用,以及查看报告的一个文章,不知道楼主大大,能不能出一个???

jierong01 回复

不好意思,我并没有直接配过 Uiautomator2 的环境,我这边是通过 appium

charles0427 回复

恩,我知道是 appium,可翻了几遍 testerhome 也没看到,也 google 了好多,没什么比较好的,所以看到发了这么一篇文章,就询问一下,恩,还是谢谢

jierong01 回复

感觉这篇不错啊,UIAutomator2.0 简介
不知道是不是你需要的~

charles0427 回复

看了一下,感觉 666,谢谢了,已经为你点赞哈~

为什么在 appium 中使用了'automationName': 'Uiautomator2' 运行速度变的非常慢,而且还 没有获取到 toast,大家有遇到过这种问题么

erhanghang 回复

运行慢确实有,toast 亲测是能获取到的,如果获取不到我觉得很大概率是运行的慢导致 toast 已经没了,还没执行到检测 toast 的语句,导致找不到

有个问题咨询一下,多个设备并行执行的时候,用的还是同一个 adb 端口(5037)去安装,uiaotumation-server 和 uiautomation-server-test,能不能指定不同的 adb 端口去执行,我在在 desi_cap 中指定了不同的 adb 端口,但是好像没起作用是因为 appium 版本的问题吗?
我用的 appium 版本为 1.7.3

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册