appium工作原理

对着背影说爱祢 提交于 2020-04-05 14:56:40

Appium工作过程

1、appium是C/S模式的,分为appium-server和appium-client;

2、appium是基于webdriver协议,添加了对移动设备自动化api的扩展,所以具有和webdriver一样的特性,比如多语言支持;

3、webdriver是基于http协议的,第一次连接会建立一个session回话,并通过post请求发送一个json告知服务端相关测试信息;

4、对于Android来说,4.2以后是基于UiAutomator框架实现查找注入事件的

5、appium服务端是node.js编写的HTTP服务器,将现有的优秀的框架进⾏了集成

 

Android 工作原理

1、Appium启动的时候,会创建一个http\\127.0.0.1:4723\wd\hub服务端(中转站)

2、4723端口接收client(也就是测试脚本)发来的请求,解析对应的请求

3、appium server把对应的请求发给bootstrap.jar,它是用java写的,安装在手机上的,在手机上监听4724端口,最终调用UiAutomator命令来实现操作

4、执行的结果由bootstrap返回给appium server  ,appium server再把结果返回给client

之前,Appium通过appium-android-bootstrap实现与UIAutomator v1的交互

现在大部分都使用UiAutomator2 ,针对Google推出的 UIAutomator V2,UiAutomator2修复了v1中遇到的大多数问题,最重要的是实现了与Android系统更新的分离

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

uiautomator2原理:

automationName设置为uiautomator2,appium会调用appium-uiautomator2-driver,同时将uiautomator2 server的两个apk安装到测试设备上,

  1. io.appium.uiautomator2.server.apk,执行handlers
  2. io.appium.uiautomator2.server.test.apk,只有一个test,用于启动server

 

 

AppiumServlet ,管理请求的路由,将driver发过来的请求转发给对应Handler.

Handler,调用UiAutomator V2去执行指定操作,操作的结果经AppiumResponse统一封装

AppiumResponse,操作结果返回给appium-uiautomator2-driver,再将结果返给客户端

 

IOS工作原理

appium IOS封装了Apple的Instruments框架,主要用了Instrument里面的UI Automation,然后在设备中注入bootstrap.js进行监听

1、appium 启动server(监听4723端口),用于和脚本通信,

2、收到请求后,server调用instruments.js启动一个socket server,同事分离出一个子进程运行instruments.app,讲bootstrap.js注入device,用于和外界交互

3、bootstrap.js把执行的结果返回给appium server

Appium从1.6.0 开始支持XCUItest框架, 

XCUITest是IOS官方维护的一个自动化测试框架,在iOS 10/xcode8 苹果完全去掉了以前的 UIAutomation 的技术支持,所以现在,要进行IOS的app自动化,只能使用XCUITest。

appium使用的模块是appium-xcuitest-driver,其中引用的Facebook提供的WDA方案来驱动iOS的测试,WDA编译应用在真机中必须配置development team和provisioning profile

 

 

 

了解了对应的工作原理,在写自动化的时候,遇到了问题,我们可以尝试去修改对应的源码

发布了57 篇原创文章 · 获赞 20 · 访问量 10万+
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!