天天使用Appium,但是你真的理解Appium的工作原理吗

每天进步一点点,关注我们哦,每天分享测试技术文章

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:magetest

码同学抖音号:小码哥聊软件测试

现在移动端电子产品盛行,操作简单,方便,地铁,路上,餐厅...各种公众场合,放眼望去,大家都几乎一个姿势,手里拿着手机,这样我们的各种各样的手机app也就都应运而生,那么作为测试的我们,当然我们也需要紧跟时代的潮流,学习app的自动化测试也是势在必行的事情,那么app自动化测试中占用主流地位的工具就是appium,那么今天就给小伙伴们科普一下appium的工作原理。

 

 

 

Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试。它使用WebDriver协议驱动iOS,Android和Windows应用程序。

Appium的优势是可以跨平台同时支持Android、iOS,并且支持多种语言,java、python、php、Ruby等等

官网地址是http://appium.io/,

中文文档地址是http://navo.top/uYBbAv

 

 

首先我们来说一下版本大于1.13的appium的工作过程。

免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest

1.appium是C/S模式,分为appium-server和appium-client两部分,appium-server里面有appium的核心工具,命令行工具,appium-client内嵌了 Appium Server 和 Inspector 的综合工具

 

2.appium是基于webdriver协议,WebDriver(也叫「Selenium WebDriver」)规定了一个客户

端-服务器协议(称为JSON Wire Protocol),按照这种客户端-服务器架构,可以使用自己熟悉的语言(比如python)编写的客户端向服务器发送适当的HTTP请求。

 

3. 第一次连接会建立一个session会话,并通过post请求发送一个json告知服务端相关测试信息

 

4. 对于Android来说,4.3+,使用系统自带的自动化框架,谷歌的UiAutomator/UiAutomator2

 

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

 

 

 

Android 工作原理

1、Appium启动的时候,会创建一个

http\\127.0.0.1:4723\wd\hub服务端(中转站)

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

3、appium server启动UiAutomator2服务,然后把两个apk安装到手机上,一个io.appium.uiautomator2.server.apk,一个io.appium.uiautomator2.server.test.apk,这两个apk封装了UiAutomator2的服务和一些指令,然后通过netty服务,可以操作手机,比如进行点击,输入,滑动等操作。

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

在Appium <= 1.13.x以前,默认的引擎用的是UiAutomator1,之后用的都是UiAutomator2,如果想用UiAutomator1代替UiAutomator2,可以加一个参数

automationName=UiAutomator1

小贴士:

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

 

 

 

了解了对应的工作原理,我们就可以更好的去做移动端自动化,遇到问题的时候,我们也可以尝试去修改源码,知其所以然,做事才可以事半功倍。

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

posted @ 2022-07-13 10:03  码同学软件测试  阅读(54)  评论(0编辑  收藏  举报