?一、运行一个错误的流程(系统版本故意填错了)
第一步:
当执行下面这行代码时,实际上是python代码往这样的一个地址http://127.0.0.1:4446/wd/hub上发送了一个post请求, 以这样的一个接口创建了一个post请求,下面弱字符是这个接口请求传的参数caps,也就是我们python代码里写的caps参数(deviceName,platforName,app 等等)。
driver = Remote(command_executor='http://127.0.0.1:4446/wd/hub',
desired_capabilities=caps
)
第二步:
appiumdriver去调用这个方法去创建一个session,参数也是caps这些,
第三步
这里有一个警告信息:这个automationName没有被提供在这个desired capabilities里面,不过没关系,默认就是使用uiAutomator2。
?
?接下来还是校验参数,检验本地的apk包
?重点:
然后appium调用了本地的adb指令,
使用adb指令输入了这么一行命令,这个命令是启动一个app的服务
?
通过adb查看emulator-5554这个设备的安卓版本是7.1.2,然后我们参数caps指定的安卓版本是8.1,两者之间是不匹配的,后面直接断言不通过,8.1不等于7.1.2,后面就不往下走了。
?然后直接报500
梳理
python启动appium时发生了什么?
- python 往 appium服务的 /session 接口 发送了一个 post 请求,参数就是caps指定的参数(系统名,系统版本,设备名,app)。
- appium会校验你传过来的参数。
- 怎么校验的?通过adb指令去校验,比如说adb connect 去建立连接,检测设备系统版本(通过adb指令 adb shell进入设备的系统,获取系统相关信息,完成校验)。不需要我们手动去敲adb这些命令,appium都自动给我们去输入adb命令去校验。
- 获取系统相关信息完成校验
- 检验 app有没有安装
- ?adb shell am start 启动app?
???????因为校验操作较多,所有appium启动较慢。
二、运行一个正常的流程
校验跟运行一个错误的流程同理
?启动app: adb.exe -p 5037 -s emulator-5554 shell am start -w -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity -s -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000
|