zoukankan      html  css  js  c++  java
  • 通过Appium日志,分析其运行原理

    1.启动appium;

    clipboard.png

    appium的rest http 接口开始监听 4723 端口;

    2.运行 python 脚本;

    2.png

    appium接收到一个post请求 /wd/hub/session,并携带了 capabilities 字典参数;

    3.appium创建session;

    3.png

    调用 AppiumDriver.createSession() 方法,并把携带的参数传入;

    创建成功session,显示session id;

    4.找到jdk和adb;

    4.png

    5.检查android还是ios,判断是否连接设备、系统版本号、设备名称;

    5.png

    6.启动创建的 session,连接设备,获取设备的详情信息;

    6.png

    7.开始执行,运行 UiAutomator ,找到 AppiumBootstrap.jar ,并 push 到手机上;找到 要运行的包名,并尝试连接设备;失败后,会重新运行 UiAutomator ,尝试链接设备;唤醒屏幕,启动测试程序;

    7.png

    8.请求 close url,调用 AppiumDriver.closeApp() 方法,传入参数 session id;

    关闭会话,等待60秒;

    关闭session会话,删除session id;

    通过adb命令向android发送 shutdown 命令,AndroidBootstrap 接收并返回结果;

    8.png

    9.关闭 UiAutomator;

    9.png

    需要知道的

    1.android通过package来识别app的。如果俩apppackage一样,只能安装一个,另一个安装时会提示已安装或直接覆盖上一个app;

    Activity为app提供屏幕显示内容,也就是界面化,所有的UI都显示在Activity;

    启动app时,手机先通过package找到要启动的app,然后再查找主Activity启动。一般为欢迎页面、登录页面或其他主页面;

    app的UI测试就是要测试各Activity的页面元素;

    2.appium是C/S架构,核心是web服务器,它提供一套REST的接口,会接收到客户端的连接,监听到命令。执行会再将结果通过Http响应返回给客户端;

    appium服务端会创建一个session,自动化始终围绕一个session进行。不同语言有不同实现方式,但最终都会是发送一个Post请求给服务端,请求中包含一个Json对象,被称作‘Desired Capabilities’,Desired Capabilities是一些键值对的集合,客户端将这些键值对发给服务端,告诉服务端我们想怎么测试。

    愿你走出半生,归来仍是少年!
  • 相关阅读:
    Spring事务的传播行为、隔离级别、回滚、只读和过期
    Spring 使用XML文件的方式配置事务
    SpringJDBCTemplate
    Spring事物管理
    【运维技术】Zookeeper单机以及集群搭建教程
    【运维技术】kafka三实例集群环境搭建及测试使用
    【运维技术】redis(一主两从三哨兵模式搭建)记录
    【运维技术】shell脚本实现线程挂掉,自动重启功能
    【运维技术】slc pm 启动不了,异常排除问题记录
    【知识总结】Java类初始化顺序说明
  • 原文地址:https://www.cnblogs.com/changqing8023/p/15139554.html
Copyright © 2011-2022 走看看