• UiAutomator、UiAutomator2、Bootstrap的关系


    很多同学经过一段时间的学习之后都明白了Appium的基本原理,但是越学习到后面发现出现的很多陌生名词无法弄清楚其具体作用,今天这篇文章的目的就是为了让大家来弄懂三个高频名词:UiAutomator、UiAutomator2、Bootstrap。

    首先来说下UiAutomator和bootstrap:

      UiAutomator是Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架。其最大的特点就是可以跨进程操作,我们可以使用UiAutomator框架提供的一些方便的API来对安卓应用进行一系列的自动化测试操作,如点击、滑动、键盘输入、长按以及常用的断言方法等。可以替代以前繁琐的手工测试。

      Bootstrap是Appium在初始化的时候推送到安卓手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在手机端开启一个SocketServer(通信模块),用来监听Appium从PC端过来的命令发送给UiAutomator来执行处理。

      下图为官方提供的原理图:

    WebDriver script:

      我们的测试脚本(java or python)

    Appium:

      会首先开启一个监听4723端口的server,接收测试脚本发送过来的对应请求,再讲对应的请求发送给中间件Bootstrap.jar(注意这里的请求不是整个脚本文件,而是对应的命令请求,比如:点击一个元素就是一条请求)

    Bootstrap.jar:

      监听4724端口由appium发送过来的相关请求,并且将请求转换成UiAutomator可以识别的命令发给UiAutomator进行处理

    UiAutomator2:

    说到这里相信大家已经了解了这两者的关系,那为什么还会有UiAutomator2,难道是UiAutomator的升级版本?没错!

    appium在最近有加入了对UiAutomator2(也可称为UiAutomator V2)的支持实现Android端自动化,原理同之前的UiAutomator+Bootstrap有很大的不同:

    为了能够支持UiAutomator2,Appium引入了appium-uiautomator2-server(类似driver与Selenium关系)

    以下是其官网的wiki介绍,英文基础较好的同学可以去看看

    https://github.com/appium/appium-uiautomator2-server/wiki

    肯定还是有比较多同学对英文犯晕的,那我就给大家翻译翻译下:

    1、Appium使用UiAutomator2的目的是为了替换掉之前的UiAutomator+Bootstrap模式

    2、Bootstrap是基于UiAutomator V1(即为UiAutomator)的,但是UiAutomator很多Api基本上官方不再维护了

    3、UiAutomator V2修复了UiAutomator V1中遇到的大多数问题,最重要的是实现了与Android系统更新的分离

    有看到我们公开课的同学或者VIP课程的同学比较清楚:在获取到toast信息的时候需要将automationName设置成UiAutomator2,就是因为在UiAutomator2上新增了AccessibilityService服务,可以实现Toast的获取。

    以下是其使用原理图:

    WebDriver script:

      不用多说,就是我们的执行脚本

    Appium:

      客户端传递desired capabilities属性配置给Appium Server来创建一个会话,Appium Server会调用appium-uiautomator2-driver,同时将UiAutomator2 server的两个apk安装到测试设备上

      1、appium-uiautomator2-server-vx.x.x.APK

      2、appium-uiautomator2-server-debug-androidTest.apk

    UiAutomator2 server两个apk的作用:

      1、UiAutomator2 驱动模块,负责创建会话,安装UiAutomator2-server.apk到设备上,开启Netty(这是一个通信框架,相当于Bootstrap使用的SocketServer升级版本)

      2、UiAutomator2服务器模块,当驱动模块创初始化完毕,服务器就会监听PC端Appium发送过来的请求,将请求发送给真正底层的UiAutomator2。

    --------------------------------------------------------------------

    转载自:https://www.cnblogs.com/yyoba

  • 相关阅读:
    Path文件操作实例
    Cache缓存对象缓存对象
    Session对象实例
    移动端适配问题
    webpack4 优化性能
    webpack源码分析
    wepack源码解析1
    webpack面试题
    asnyc await
    node 知识
  • 原文地址:https://www.cnblogs.com/charles2018/p/13894555.html
Copyright © 2020-2023  润新知