当前位置:网站首页>Appium自动化测试基础 — Appium测试环境搭建总结
Appium自动化测试基础 — Appium测试环境搭建总结
2022-07-05 05:50:00 【测试-八戒】
1、Appium测试环境搭建整体思路
(1)Android测试环境搭建
Android测试环境需要搭建三个环境,Java,AndroidSDK,Android模拟器。
为什么要安装这三个环境?
- Java:Android的应用程序层使用的语言是Java,所以需要使用Java环境。
- AndroidSDK:Android SDK给你提供开发、测试所必须的Android API类库。
- Android模拟器:实际上就是一台手机,方便我们给大家展示效果。
(2)Appium测试环境搭建
Appium测试环境需要搭建
- Appium Server:
是Appium的核心,提供了一组REST API的Web服务器。
Appium收到客户端的连接、监控命令,之后在移动设备上执行这些命令,最后把执行结果放在HTTP响应中返回给客户端。
可以通过Node.js安装,也可以通过Appium Desktop启动Appium Server服务。 - Appium Clients:
appium官方提供了一套Appium client,涵盖多种语言ruby/java/python等,
在测试的时候,一般要使用这些client库去替换原生的webdriver库。
让我们可以更方便的写出可读性更好的测试用例。 - Devices:
就是我们的移动设备,可以是真实的手机,或者是电脑上的Android模拟器。
(Android模拟器我们在上一步就完成了)
(3)测试脚本语言的环境搭建
例如:Pyhtonj、Java等开发环境。
要使用Pyhton语言写我们的测试脚本,就搭建Python语言的开发环境,包括开发工具。
要使用Java语言写我们的测试脚本,就搭建Java语言的开发环境,包括开发工具。
2、Appium在Android端和IOS端的工作流程
(1)Android
在Android端,Appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。
另外由于UiAutomator对H5的支持有限,Appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。
appium 在android端工作流
- client端也就是我们
test script(webdriver测试脚本)。 - 中间是起动的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的
WebDriver JSON Wire Protocol。
在这里提供它提供了一套REST的接口,Appium Server接收webdriver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。 - appium server会把请求转发给中间件
Bootstrap.jar,它是用java写的,安装在手机上的Bootstrap监听4724端口并接收Appium的命令,最终通过调⽤用UiAutomator的命令来实现。 - 最后
Bootstrap将执行的结果返回给Appium server。 - Appiumserver再将结果返回给Appium client。
(2)ios
在IOS端,Appium同样使⽤WebDriver的一套协议。
与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自动化测试框架),然后在设备中注⼊入bootstrap.js进⾏行监听。
appium 在ios端工作流
- client端 依然是
test script(webdriver测试脚本)。 - 中间是起动的是Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium⽀持标准的
WebDriver JSON Wire Protocol。
在这里提供它提供了一套REST的接口,Appium Server接收webdriver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。 - appium server调用
instruments.js启动⼀一个socket server,同时分出一个子进程运⾏instruments.app,将bootstrap.js(一个UIAutomation脚本)注⼊入到device⽤于和外界进行交互 - 最后Bootstrap.js将执行的结果返回给Appium server
- Appium server再将结果返回给 Appium client。
(3)总结:
所以我们可以看到android与ios区别在于Appium将请求转发到bootstrap.js或者bootstrap.jar。
然后由bootstrap驱动UIAutomation和UiAutomator去Devices上完成具体的动作。

3、ADB执行原理和Appium执行原理
(1)ADB原理:
ADB原理简易模型图 (跟着12345步骤走)

(2)ADB实际操作原理参考图

(3)Appium原理
Appium简易原理图(跟着序号12345678走)

(4)Appium原理实际参考图( 结合简易原理图 )

重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料在下方链接如下


边栏推荐
- Daily question 1342 Number of operations to change the number to 0
- leetcode-3:无重复字符的最长子串
- Sword finger offer 05 Replace spaces
- 网络工程师考核的一些常见的问题:WLAN、BGP、交换机
- Codeforces Round #716 (Div. 2) D. Cut and Stick
- Bit mask of bit operation
- [cloud native] record of feign custom configuration of microservices
- In this indifferent world, light crying
- 常见的最优化方法
- leetcode-6109:知道秘密的人数
猜你喜欢

1.14 - 流水线

【实战技能】如何做好技术培训?

Typical use cases for knapsacks, queues, and stacks

剑指 Offer 05. 替换空格

Some common problems in the assessment of network engineers: WLAN, BGP, switch

Introduction and experience of wazuh open source host security solution

Palindrome (csp-s-2021-palin) solution

A misunderstanding about the console window
![[article de jailhouse] jailhouse hypervisor](/img/f4/4809b236067d3007fa5835bbfe5f48.png)
[article de jailhouse] jailhouse hypervisor

Sword finger offer 06 Print linked list from beginning to end
随机推荐
Time of process
Annotation and reflection
Daily question 2013 Detect square
Sword finger offer 04 Search in two-dimensional array
【实战技能】如何做好技术培训?
Introduction and experience of wazuh open source host security solution
[cloud native] record of feign custom configuration of microservices
A problem and solution of recording QT memory leakage
Bit mask of bit operation
LeetCode 1200.最小绝对差
Dichotomy, discretization, etc
每日一题-无重复字符的最长子串
1.15 - 输入输出系统
Scope of inline symbol
Daily question - Search two-dimensional matrix PS two-dimensional array search
Spark中groupByKey() 和 reduceByKey() 和combineByKey()
How many checks does kubedm series-01-preflight have
游戏商城毕业设计
Dynamic planning solution ideas and summary (30000 words)
wordpress切换页面,域名变回了IP地址