Appium原理

Appium是一款开源的自动化测试框架,适用于iOS、Android和FirefoxOS平台的原生、混合及移动网页应用。它遵循WebDriver的jsonwire协议,利用UIAutomation和UIAutomator库实现测试。本文详细介绍了Appium的工作原理、设计模式及其在Android和iOS平台上的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、前言

二、什么是appium?

三、Appium的工作原理+相关基本概念

1.工作原理

2.基本概念

2.1 Android

2.2 IOS


 

一、前言

本章主要讲一下,appium的基本原理、appium是个啥、能干点啥...

主要讲Android。IOS 和Android原理差不多,就略掉啦

二、什么是appium?

Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。

Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。

Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试

appium设计模式:client-server。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及webdriver如何做到支持多语言的。

官网解释如下:

Appium is an open-source tool you can use to automate mobile native, mobile web, and mobile hybrid applications on iOS and Android platforms. “Mobile native apps” are those written using the iOS or Android SDKs. “Mobile web apps” are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome on Android). “Mobile hybrid apps” have a native wrapper around a “webview” – a native control that enables interaction with web content. Projects like Phonegap, for example, make it easy to build apps using web technologies that are then bundled into a native wrapper – these are hybrid apps. Importantly, Appium is “cross-platform”: it allows you to write tests against multiple platforms (iOS, Android), using the same API. This enables a large or total amount of code reuse between iOS and Android testsuites.

三、Appium的工作原理+相关基本概念

1.工作原理

 

2.基本概念

2.1 Android

在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。

另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。

  • 工作过程

——>客户端client(一般来说就是我们代码执行的机器,狭义可以认为就是我们的测试脚本):发出请求               

——>中间服务appium server 启动端口4723,支持客户端脚本发出的请求的,解析内容,并转发Bootstrap.jar (这个是安装在手机,即我们测试的移动设备上的)

——>Bootstrap.jar 监听4724并接收appium发出的命令,于是去调用UIautomator命令来操作这个移动设备

——>将结果返回给 中间服务appium server

——>中间服务appium server再返回给我们的客户端脚本。

 

详见图1、图2(按自己的理解这样写一下,希望能帮助到同仁。有不妥的望指教,我会改正,大家一起进步)

  • session

session就是一个会话,在webdriver/appium,你的所有工作永远都是在session start后才可以进行的。一般来说,通过POST /session这个URL,然后传入Desired Capabilities就可以开启session了。

开启session后,会返回一个全局唯一的session id,以后几乎所有的请求都必须带上这个session id,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器。

session id全局唯一,在同一台机器上启动多个session就变成了可能(selenium gird所依赖的具体理论根据)

  • Desired Capabilities

Desired Capabilities携带了一些配置信息。类似于key-value形式的对象。你可以理解成是java里的map,python里的字典,ruby里的hash以及js里的json对象。实际上Desired Capabilities在传输时就是json对象。

Desired Capabilities最重要的作用是告诉server本次测试的上下文。

1.这次是要进行浏览器测试还是移动端测试?如果是移动端测试的话是测试android还是ios,

2.如果测试android的话那么我们要测试哪个app?

只有Desired Capabilities解答完成,server 才会去启动对应的测试设备

 

2.2 IOS

工作流程:参见Android

android与ios区别:在于appium 将请求转发到bootstrap.js或者bootstrap.jar.然后由bootstrap 驱动UIAutomation和UiAutomator去devices上完成具体的动作。

Android 是appium 请求发送 Bootstrap.jar

IOS 是appium 请求发送 Bootstrap.js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值