[Appium] Appium 自动化测试框架原理介绍

Appium

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

Appium设计哲学

不需要为了自动化而且重新编译或修改测试 app;
不应该让移动端自动化测试限定在某种语言和某个具体的框架
不要为了移动端的自动化测试而重新发明轮子
移动端自动化测试应该是开源的。

Appium 特点

跨架构,native hybrid webview
跨设备,android ios firefoxos
跨语言,java python ruby nodejs php
跨 app, 可以在多个 app 之间交互
不依赖源代码
不限制测试框架和平台

主流框架比较

image.png

Appium Android Arch

image.png

1.appium客户端就是我们所说的自动化脚本代码,支持Java\Python等主流编程语言
2.appium服务端由两个作用:1. 连接设备 2. 接收客户端发送过来的HTTP请求并发送到移动设备上执行。其中服务端需要安装在PC上,并且在客户端运行代码之前启动。服务端由node.js编写,在运行时,通过建立session与手机终端进行交互。
3.移动终端,通过接收appium服务端发送过来的指令,执行app自动化测试。

Appium IOS Arch

image.png

Appium 执行流程

image.png

1、client端也就是我们 test script是我们的webdriver测试脚本。
2、中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的
WebDriver JSON WireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用
对应的框架响应操作。
3、Appium server会把请求转发给中间件Bootstrap.jar 它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium的命令,最终通过调
⽤用UiAutomator的命令来实现。
4、最后Bootstrap将执行的结果返回给appium server。
5、Appium server再将结果返回给 appium client。

Appium 重要概念

Appium的客户端和服务端之间进行通信都必须在一个Session的上下文中进行。

客户端在发起通信的时候首先会发送一个叫作“Desired Capabilities”的JSON对象给服务器。服务器收到该数据后,会创建一个session并将session的ID返回到客户端,之后客户端可以用该session的ID发送后续的命令。

Capability
Capability的功能是配置Appium会话。

他们告诉Appium服务器您想要自动化的平台和应用程序。DesiredCapabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的值。(如:"platformName": "Android")DesiredCapabilities主要用于通知Appium服务器建立需要的Session。
http://appium.io/docs/cn/writing-running-appium/caps/#android

Appium API

https://appium.io/docs/en/about-appium/api/

你可能感兴趣的:([Appium] Appium 自动化测试框架原理介绍)