Appium原理

面试的时候,被问到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(需要FQ)。

三、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收到指令后会去完成点击,滑动等操作,完成之后再给服务端一个响应。服务端收到之后再去运行脚本。

原文:https://www.cnblogs.com/csj2018/p/9937511.html

【Appium】Appium工作原理(2)的更多相关文章

  1. 移动端自动化测试之Appium的工作原理学习

    Appium 简介 参考官网文档说明:http://appium.io/docs/en/about-appium/intro/ Appium官方文档上介绍,Appium 是一个自动化测试的开源工具,支 ...

  2. Appium的工作原理

    把我们写的python语言代码,看做客户端 通过客户端向appium服务器发送请求 appium服务器把我们的代码转换成手机可以识别的指令 然后把指令发给手机,手机根据指令做出相应的操作 最后手机把操 ...

  3. Appium简介及工作原理

    一.什么是Appium Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver ...

  4. Appium介绍及工作原理

    一.Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriver的 ...

  5. 【Appium】Appium工作原理

    参考:http://www.cnblogs.com/zhjsll/p/5698878.html 原作者写的很好,所以直接放在这里. 一.什么是Appium Appium是一个开源.跨平台的测试框架,可 ...

  6. Appium 简介及工作原理

    申请:本文介绍主要是针对Android. 1.什么是Appium: Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及Firefox ...

  7. [转载]Appium工作原理

    [Appium]Appium工作原理 2017-09-13 15:28 sophia194910 阅读(7658) 评论(0) 编辑 收藏 参考:http://www.cnblogs.com/zhjs ...

  8. appium===Appium的前世今生

      一.什么是Appium Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及FirefoxOS平台.Appium使用WebDriv ...

  9. appium工作原理

    Appium原理 面试的时候,被问到appium原理,一点不会,实在尴尬.大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/69220 ...

随机推荐

  1. 浏览器解析JavaScript的原理

    JavaScript的特点一般都知道的就是解释执行,逐行执行,就是从上到下依次执行. JavaScript的执行之前,其实还是有一些操作的,只是没有表现出来 JavaScript的执行过程: 1.语法 ...

  2. TCP 传输控制协议

    开头先说几个协议: IP:网际协议 TCP:传输控制协议 Http:超文本传输协议 AMQP:高级消息队列协议 一:TCP是什么? TCP(Transmission Control Protocol ...

  3. Visual Studio 2017/2019 企业版 Enterprise 激活码

    VS2017 Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF VS2017 Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH ...

  4. Jenkins部署的时候报错

    拿了一个最简单的,好不容易maven开始跑了 最终给我报错了 [INFO] -------------------------------------------------------------- ...

  5. 第 9 章 数据管理 - 074 - 如何安装和配置 Rex-Ray?

    Rex-Ray 安装和配置方法 Rex-Ray 是一个优秀的 Docker volume driver 安装和配置方法 Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上 ...

  6. expect免互交 常用编辑文本

    expect免互交 yum -y install expect cat ip_pass.txt #这里写上要执行的IP地址和root用户密码 cat ssh2.exp #编写要执行的操作 #!/usr ...

  7. [经验]怎么删除“通过QQ/TIM发送到”右键菜单

      首先打开QQ主面板上的系统设置   选择[基本设置]-[文件管理]菜单,并将如图所示的选项去掉勾选即可

  8. 雷林鹏分享:jQuery EasyUI 数据网格 - 自定义排序

    jQuery EasyUI 数据网格 - 自定义排序 如果默认的排序行为不满足您的需求,您可以自定义数据网格(datagrid)的排序行为. 最基础的,用户可以在列上定义一个排序函数,函数名是 sor ...

  9. SQLserver提示事务日志已满无法重建索引,前台提示日志已满处理方案

    1.数据库--属性--选项--恢复模式:简单. 2.数据库--任务--文件类型:日志                            在释放未使用的空间潜重新组织页:1M 3.数据库--属性-- ...

  10. 复杂的xml资源

    某些资源类型是由XML文件表示的多个复杂资源的组合.例子是一个animated vector drawable,它是一个封装了vector drawable和动画的drawable资源.这需要使用至少 ...