1.启动appium;
appium的rest http 接口开始监听 4723 端口;
2.运行 python 脚本;
appium接收到一个post请求 /wd/hub/session,并携带了 capabilities 字典参数;
3.appium创建session;
调用 AppiumDriver.createSession() 方法,并把携带的参数传入;
创建成功session,显示session id;
4.找到jdk和adb;
5.检查android还是ios,判断是否连接设备、系统版本号、设备名称;
6.启动创建的 session,连接设备,获取设备的详情信息;
7.开始执行,运行 UiAutomator ,找到 AppiumBootstrap.jar ,并 push 到手机上;找到 要运行的包名,并尝试连接设备;失败后,会重新运行 UiAutomator ,尝试链接设备;唤醒屏幕,启动测试程序;
8.请求 close url,调用 AppiumDriver.closeApp() 方法,传入参数 session id;
关闭会话,等待60秒;
关闭session会话,删除session id;
通过adb命令向android发送 shutdown 命令,AndroidBootstrap 接收并返回结果;
9.关闭 UiAutomator;
需要知道的
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是一些键值对的集合,客户端将这些键值对发给服务端,告诉服务端我们想怎么测试。