测试Appium原理
Posted Bug挖掘机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试Appium原理相关的知识,希望对你有一定的参考价值。
文章目录
前言
Appium是一块主流的移动自动化测试框架,支持跨语言(如Java,Python等)
Appium的实现原理
被测设备为安卓
对于安卓被测设备,目前可以选择UIAutomator
和UIAutomator2
作为底层的测试框架
一、使用UIAutomator作为底层测试框架,原理图如下:
执行流程:
(1)Appium Client(我们编写的脚本)发送基于Json Wire Protocol,发送HTTP请求给Appium Sever,Appium Sever监听4723端口。若发送JSON内容为配置信息,被测设备收到命令后安装应用并启动;若为查找JSON,UI Automator会查找对应控件
(2)Appium Sever利用appium-android-driver,使用adb push 命令将Bootstrap.jar发给安卓被测设备。Bootstrap.jar有两个角色:一个是UI Automator的测试脚本,另一个是监听4724端口的socket服务器
(3)接下来Bootstrap.jar会接收Appium Sever发过来的命令,并将命令转发给UiAutomator对被测app执行相关操作
(4)Bootstrap.jar将结果发给Appium Server再传给Appium Client
注:使用UIAutomator测试框架,Appium Client和Appium Server可不在同一PC上(通过HTTP),但Appium Server和安卓被测设备必须通过数据线连接。
二、使用UIAutomator2作为底层测试框架,原理图如下:
执行流程:
(1)Appium Client(我们编写的脚本)发送基于Json Wire Protocol,发送HTTP请求给Appium Sever。
(2)Appium Sever利用UIAutomator2 Driver,将UIAutomator2 server的两个apk发给安卓被测设备。这两个apk分别为io.appium.uiautomator2.server.apk(执行handlers)以及io.appium.uiautomator2.server.test.apk(只有一个test,用于启动server)
(3)接下来UIAutomator2 server APK 里面的Netty Server会接收Appium Server(相当于Netty Client)发来的HTTP请求,并通过AppiumServlet管理请求的路由,将driver发过来的请求转发给对应Request Handler。接着Request Handler 调用UiAutomator V2让被测APK执行指定操作,操作的结果经AppiumResponse统一封装
(4)操作结果返回给appium-uiautomator2-driver(Appium Sever),再将结果返回给Appium Client
注:使用UIAutomator2测试框架,Appium Client和Appium Server可不在同一PC上(通过HTTP),Appium Server和安卓被测设备可通过数据线或同一wifi连接。
被测设备为苹果
执行流程:
(1)PC端用命令行或Xcode在被测苹果设备上启动testRunner,安装一个WebDriverAgentRunner
(2)WebDriverAgentRunner(WebDriverAgent Api支持W3C WebDriver Spec设计风格),接收Appium Server发送过来的HTTP请求,转义为XCTest的命令,在被测苹果设备对被测app执行操作,并且操作结果再以Json的形式反馈给Appium Client进行汇总
注:Accessibility 是 Apple 很早之前构建的一个框架,它能帮助一些行动不便的用户来更好地使用应用。XCTest利用Accessibility进行UI控件的识别和定位
以上是关于测试Appium原理的主要内容,如果未能解决你的问题,请参考以下文章