Appium UiAutomator2 Server 运行原理分析

charles0427 · July 04, 2017 · Last by cheung replied at October 14, 2018 · 6335 hits

这里分享外网一篇文章,对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,谢谢了,已经为你点赞哈~

jierong01 回复

😉

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

erhanghang 回复

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

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up