zoukankan      html  css  js  c++  java
  • appium工作原理

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

  • 相关阅读:
    vue自定义指令
    ZOJ Problem Set–2104 Let the Balloon Rise
    ZOJ Problem Set 3202 Secondprice Auction
    ZOJ Problem Set–1879 Jolly Jumpers
    ZOJ Problem Set–2405 Specialized FourDigit Numbers
    ZOJ Problem Set–1874 Primary Arithmetic
    ZOJ Problem Set–1970 All in All
    ZOJ Problem Set–1828 Fibonacci Numbers
    要怎么样调整状态呢
    ZOJ Problem Set–1951 Goldbach's Conjecture
  • 原文地址:https://www.cnblogs.com/linwenbin/p/10640507.html
Copyright © 2011-2022 走看看