通过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是一些键值对的集合,客户端将这些键值对发给服务端,告诉服务端我们想怎么测试。

愿你走出半生,归来仍是少年!
原文地址:https://www.cnblogs.com/changqing8023/p/15139554.html