ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Appium移动自动化框架原理

2022-01-03 16:32:47  阅读:154  来源: 互联网

标签:Appium 框架 iOS Session 自动化 服务器 Android 客户端


一、基本介绍

1、Appium介绍

  • appium是一个移动端自动化测试开源工具,支持Android和iOS平台,支持python、Java等语言,即同一套java或python脚本可以同时运行在iOS和Android平台上​。

  • appium是跨平台的,可以针对不同的平台用一套API来编写测试用例

  • appium是一个C/S架构,核心是一个web服务器,它提供了一套REST的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行的结果放在HTTP响应中返还给客户端。

2、Session

        自动化始终围绕一个Session(会话)进行​。客户端初始化一个Session来与服务端交互,不同的语言有不同的实现方式,但它们最终都是发送一个POST请求给服务端,请求中包含一个JSON对象,其被称作“Desired Capabilities”。此时,服务端就会开启一个自动化的Session,然后返回一个Session ID,Session ID将会被用户发送后续的命令

3、Desired Capabilities

        Desired Capabilities是一些键值对的集合(比如一个map或者hash)。客户端将这些键值对发送给服务器,告诉服务器想要执行怎么的测试​。比如把platformName 设置为iOS,告诉Appium服务器,想要一个iOS的Session,而不是一个Android的session

二、Appium移动自动化框架原理

        要真正理解Appium的内部原理,可以把Appium分成3大部分,分别是Appium Client、Appium Server和设备端,这三部分的关系如图示:

 

1、Appium Server服务器

        Appium Server使用Node.js编写的,既可以用源码编译,也可以从npm直接安装​。appium 服务器有很多的语言库​,比如:Java、python、ruby、php、JavaScript和C#等,这些库都实现了Appium对WebDriver协议的扩展,当使用appium的使用,只需要使用这些库代替常规的WebDriver库就可以了​。

2、Appium Client客户端

        Appium Client客户端是一个扩展WebDriver协议库,当用自己喜欢的语言写case时,会将该语言扩展的WebDriver库添加到自己的环境中,这时可以把它理解为这就是一个客户端。

对于Appium Client客户端的安装包,Mac系统上直接运行Appium​.dmg,Windows上运行Appium.exe

3、Appium iOS/Android工作原理

        API接口调用selenium的接口,Appium Server接收WebDriver标准请求,解析请求内容,调用​对应的框架响应操作。代码将Desired Capabilities中键值对组合成一个JSON,然后通过HTTP协议发送到Appium服务器创建一个Session​。代码与Appium的所有交互都围绕这个Session​进行。Session创建成功后,Appium再通过USB接口与手机之间创建TCP连接,先安装一些服务端app,比如Android API 4.2+是Uiautomator,iOS使用XCUITest。手机操作系统都是由Appium发送指令到Uiautomator或XCUITest,然后在由Uiautomator或XCUITest进行控制​。

Appium的核心是一个遵守REST设计风格的Web服务器,它接收客户端的连接和指令,在手机设备上执行命令,然后通过HTTP的响应收集命令执行的结果​。这种结构提供了很好的开放特性​:只要某种语言有HTTP客户端的API,就可以通过该语言编写​自己的测试代码。

欢迎关注公众号:

 

 

 

 

标签:Appium,框架,iOS,Session,自动化,服务器,Android,客户端
来源: https://blog.csdn.net/dou_being/article/details/122288584

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有