启动你的程序吧
启动appium server
- 启动appium程序
- start server即可
在设备上安装应用程序
下载下来并且拖动到设备中进行安装
链接:https://pan.baidu.com/s/10_69_v6arAdSrEIhdPJTFw 密码:cn3m
如果不进行拖动的话,也可以使用上一章节我们学习的adb指令进行安装
1
adb install -r -g C:\Users\gengzongyuan\Desktop\mobileqq_android.apk
配置解析
配置信息
1
2
3
4
5
6
7
8
9
10
11desc = {
'platformName':'Android', # 设备类型
'platformVersion':'5.1.1', # 安卓版本
'deviceName':'emulator-5554', # 设备名称
'noReset':True, # 是否不重置应用,默认为false(重置应用)
'unicodeKeyboard': True, # 由于appium可以使用自己的输入法来解决一些中文输入的问题,所以我们一般默认使用appium的输入法
'resetKeyboard':True,# resetKeyboard如果设置会true,会将输入法重置为运行程序前的输入法
'appPackage':'com.tencent.mobileqq', # 首次进入程序调用的安装包
'appActivity':'.activity.SplashActivity', # 调用安装包之后进入的启动页
}打开app,进入页面
- windows调用
adb logcat |findstr START
mac调用adb logcat |grep START
- 这里的
com.tencent.mobileqq/.activity.LoginActivity
就是包名/当前页面名称
启动程序
1 | from appium import webdriver |
日志解析
1 | [Appium] Welcome to Appium v1.6.5 |
原理浅析
- 可以看到,整个流程经历了这么几个步骤
前置操作
1
2启动appium server
启动adb服务建立session
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29client:将**driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desc)**代码转为http请求发送给appium server
↓
appium server对接受到的http请求进行解析发送给MJSONWP进行格式处理
↓
MJSONWP:处理完格式转发给BaseDriver进行字段校验
↓
BaseDriver:校验完之后执行指令新建一个AndroidDriver驱动程序
↓
ADB,AndroidDriver: 通过两者找到我们的设备
↓
进行一系列的检查操作:
- 检查是否安装了软件包
- 再次检查能否正确操作设备
- 安装io.appium.settings和unlock helper两个app
检查完毕之后adb启动了4727端口,用于后续的AndroidBootstrap新建
↓
AndroidBootstrap新建:
- 将AppiumBootstrap.jar的jar包从本机传输到设备上
- 查找当前设备上是否已经执行了AppiumBootstrap进程,如果有就kill掉
- 启动AndroidBootstrap,并启动UIAutomator服务
↓
通过adb执行启动app
同时Appium生成一个session
↓
BaseDriver:打印启动日志
↓
MJSONWP:对传递过来的信息进行格式处理
↓
HTTP:获取到设备信息并和生成的session进行绑定find代码执行
1
2
3
4
5
6
7
8
9
10
11HTTP
↓
MJSONWP
↓
BaseDriver
↓
AndroidBootstrap
↓
MJSONWP
↓
HTTPclick和input代码执行
1
2
3
4
5
6
7
8
9
10
11HTTP
↓
MJSONWP
↓
AndroidBootstrap
↓
ADB
↓
MJSONWP
↓
HTTP