天天使用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/关注码同学公众号:自动化软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。