zoukankan      html  css  js  c++  java
  • 【转】Appium日志分析

    Appium工作原理图

    log日志分析

    1.Appium服务启动默认端口为4723,这个端口是可以在启动Appium服务时自定义的,没有其他业务占用4723端口的话使用默认就好;

     

    2.根据desiredCapabilities设置的所有参数值,并根据这个设置创建一个Appium Session,这个Session是唯一的,它用于接下来与客户端保持通信使用

     

    3.然后使用adb工具查看连接的设备;

     

    4.获取目标设备的API等级,25对应的是Android 7.1系统,不同的目标机器得到的API可能会不同

     

    6.解析设置置语言,安装前重置等等操作;然后把app名字做了一层MD5加密,所以在后面不会再次出现apk的名字,而是这串MD5加密的名字。

    7.通过命令得到/data/local/tmp下面的apk的package,然后检查这个App是否安装,得到结果是没有安装则开始Installing App,开始安装App有一些处理,会先romove移除旧的apks并执行uninstalling卸载操作,都是为了安装app做准备的一些命令操作保证安装环境是干净的。然后开始安装。(这里顺便提一下/data/local/tmp这个目录一直出现,是由于没有ROOT的设备,这个目录是唯一不需要root权限可以访问的device目录)

    8.完成appium服务的4724端口与设备4724端口完成转发,简单的说就是把Appium服务机器上的4724端口与设备端4724端口完成对接,接下来需要通过这个端口来通信。这个后面总结的时候再来看会更清晰。

    9.推送AppiumBootstrap.jar到设备端,这个非常重要,后面文章会继续说这个Bootstrap到底是什么东东。然后推送Unicode IME、Setting、Unlock三个APK到设备端,可以发现在设备端安装了Appium Setting、Unlock两个APP。

    10.杀掉全部关于uiautomator的运行,并且使用adb执行shell再次查看保证uiautomator没有运行;在设备端运行AppiumBootstrap,并启动一个Socket服务,监听4724端口。

    11.通过adb在设备端运行app,并且准备好接下来的命令,设置超时时间为60秒。

    12.开始发送请求,首先查找元素,得到响应找到Element元素1,然后请求点击操作,响应点击成功,完成操作。

    13.遇到quit()方法或者60S后没有请求,开始收尾;先按下HOME回到首页,关闭logcat、关闭uiautomator、并且Appium服务删除session成功。

        从上面的过程中其他的一些交互都很好理解,过程中推送了bootstrap.jar到底有什么用呢?Bootstrap.jar是Appium运行在安卓目标测试机器上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在目标机器开启一个socket服务器来把一个session中Appium从PC端过来的命令发送给UiAutomator来执行处理。
        这个定义说明了bootstrap在appium和uiautomator中究竟处于一个什么样的角色:
    首先,它是一个uiautomator的测试脚本,它的入口类Bootstrap继承于UiAutomatorTestCase,所以UiAututomator可以正常运行它,它也可以正常的使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator的命令的关键
    其次,它是一个socket服务器,它专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理最后,它处理的是appium从pc端过来的命令。

    原文链接:https://blog.csdn.net/ouyanggengcheng/article/details/85205585

  • 相关阅读:
    后台线程处理数据,如何实时更新UI(datagridview)多线程同步问题
    DataGridView设置行高
    C#打开外部文件,如txt文件
    20120621第一天_复习与测试\04continue
    关于C#正则表达式MatchCollection类的总结
    关于sqlite中的一个错误 “database is locked"
    UI中 加个timer 写个while true的方法 不断获取run的对象
    最近帮公司开发一个邮件营销软件 用到XPTable 但找了很多方法 摸索了很久都不知道如何更新进度条 不过在国外的一个网站 终于找到答案了
    C# 简单的往txt中写日志,调试时很有用 【转】
    输入要匹配的内容和正则表达式规则 返来单个匹配的内容 正则表达式方法 常用
  • 原文地址:https://www.cnblogs.com/crystal1126/p/12793546.html
Copyright © 2011-2022 走看看