ICode9

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

Appium原理

2021-01-13 18:32:04  阅读:193  来源: 互联网

标签:Appium uiautomator bootstrap 端口 appium 原理 Android 服务端


面试的时候,被问到appium原理,一点不会,实在尴尬。

大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/69220719

appium运行时安装的2个应用:Appium Settings和Unlock。

一、appium加载的过程图解:

appium的加载过程

  • 1.调用Android adb完成基本的系统操作
  • 2.向Android上部署bootstrap.jar
  • 3.bootstrap.jar Forward Android的端口到PC机器上
  • 4.PC上监听端口接收请求,使用webdriver协议
  • 5.分析命令并通过forward 端口发给bootstrap.jar
  • 6.bootstrap.jar接收请求并把命令发给uiautomator
  • 7.ui automator执行命令

二、初步认识appium工作过程

  • 1.appium有C/S模式
  • 2.appium是基于webdriver协议对移动设备自动化api扩展而成的,所有具有和webdriver一样的特性,比如多语言支持。
  • 3.webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息。
  • 4.对于Android来说,4.2以后是基于UiAutomator框架实现查找注入事件的,4.2以前则是instrumentation框架的,并封装成一个叫Selendroid提供服务。
  • 5.客户端只需要发送http请求实现通讯,意味着客户端就是多语言支持的。
  • 6.appium服务端是node.js写的,所以安装那个平台都是先安装node,然后npm install -g appium(需要翻墙)。

三、bootstrap

1.bootstrap的作用

bootstrap是Appium运行在安卓测试机傻姑娘的一个UIAutomator测试脚本,该脚本的唯一功能就是在目标机器开启一个socket服务器来把一个session中Appium从PC端过来的命令发送给UiAutoamtor来执行处理。
它会监听4724端口获得命令,然后交给UiAutomator来处理。

2.bootstrap

首先,bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase,所以Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这是就是appium的命令可以转换成uiautomator的关键;
其次,,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;
最后,bootstrap处理的是从PC端传过来的命令,而非一个文件。

四、所使用的技术

Android上使用了instrumentation和uiautomator两套技术
ios使用uiautomation
同时支持Firefox,并可扩展其他平台。
默认开启4723端口接收webdriver请求可,4723是appium服务,专门和脚本打交道;
默认开启4724,用于和Android设备通讯
新版本的appium Android增加了UIautoamator2的支持,iOS换成了XCUItest

五、capabilities

capabilities是一些键值对的集合。客户端将键值对发送给appium服务端,用来告诉服务端怎样开始测试。

六、工作原理

Appium启动时会创建一个http://127.0.0.1:4723/wd/hub服务端(相当于一个中转站),脚本会告诉服务器我要做什么,服务端再去跟设备打交道。
服务端和设备默认使用4724端口进行通信的,底层调用uiautoamator工具,在测试的时候服务端给设备扔一个bootstrap.jar,会启动这个包,启动之后会在手机上创建一个socket服务,暴露的就是4723端口;相对socket服务来说,appium服务端又是一个客户端;
服务端收到脚本传递过来的命令之后,通过电脑上的4724端口,向设备的4724端口发送指令,bootstrap.jar收到指令后会去完成点击,滑动等操作,完成之后再给服务端一个响应。服务端收到之后再去运行脚本。

标签:Appium,uiautomator,bootstrap,端口,appium,原理,Android,服务端
来源: https://www.cnblogs.com/xiyuan2016/p/14273749.html

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

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

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

ICode9版权所有