zoukankan      html  css  js  c++  java
  • App自动化07-Appium日志分析,深入剖析 Appium 实现原理

    前言

    在新版本的Appium中,很多的小伙伴们都发现了Appium底层的自动化引擎已经默认为UIAutomator2了,那么UIAutomator2与UIAutomator有什么区别呢?

    • 首先,UiAutomator是Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架。其最大的特点就是可以跨进程操作,我们可以使用UiAutomator框架提供的一些方便的API来对安卓应用进行一系列的自动化测试操作,如点击、滑动、键盘输入、长按以及常用的断言方法等。可以替代以前繁琐的手工测试。
    • 而UIAutomator2是为UiAutomator的升级版本,修复了UIAutomator中的大部分问题,并且支持AccessibilityService(这也是获取toast元素需要的),查找元素的效率也会比UIAutomator高很多。

    既然现在Appium默认使用UIAutomator2引擎去实现Android端的自动化操作,那么对于其工作流程的实现我们有必要做了解,这样当碰到问题的时候也不会不知所措。

    Appium在和客户端及手机端进行通讯的时候会输出很多日志,通过日志我们可以知道Appium在初始化过程中做了哪些事情。
    接下来我们开始逐行进行分析:

    1、启动Appium服务,端口和工作地址信息

    2、向Appium服务发起一个post接口请求,请求的数据包含客户端发送过来的DesiredCapalities配置。Appium会对应创建一个session,这个session用于后面客户端和Appium服务通讯使用

    3、这里告诉我们在Appium V1.13版本之前默认引擎为UIAutomator,较新版本Appium(V1.14)现在的默认引擎为UIAutomator2

    4、检测Android SDK的环境,包括build-tools组件、adb等等。并且还会通过adb获取当前连接的设备情况,包括设备的API版本、设备是否在线等等。

    5、检测Appium Settings应用是否有安装

    6、将Settings应用从Appium本地目录推送到手机端,并且进行安装

    7、启动Appium Settings应用

    8、检查设备中是否有安装io.appium.uiautomator2.server应用,发现没有

    9、检查io.appium.uiautomator2.server应用的签名情况:会通过Android SDK的build-tools目录下的apksigner.bat对APK的签名进行检测,这里检测通过。

    10、以同样的方式检测应用io.appium.uiautomator2.server.test是否安装->签名

    11、安装应用io.appium.uiautomator2.servert和io.appium.uiautomator2.server.test

    12、端口转发,将Appium本地的8200端口和设备端的6790端口建立映射,此后Appium和设备端通过这条链路进行通讯。

    13、检测被测应用的安装状态,停止被测应用,清除被测应用的数据

    14、停止io.appium.uiautomator2.server.test应用,通过adb shell am instrument启动该应用,通过instrument可以启动测试套件执行测试。

    15、启动被测应用

  • 相关阅读:
    从xib初始化的UIView如何继承?
    no implicit conversion of nil into String
    @synchronized(self) 加锁引起的Crash
    iOS手工Crash解析
    iOS线程While-True死循环会发生什么
    2019年新年总结
    218. The Skyline Problem-Hard
    ReplayKit 启动录制按钮 RPSystemBroadcastPickerView 的使用
    S212-搜索+字典树-212. Word Search II-(Hard)
    mybatis批量生成
  • 原文地址:https://www.cnblogs.com/yyoba/p/12901067.html
Copyright © 2011-2022 走看看