一、Appium 原理
二、JsonWP 协议分析
2.1、什么是 W3C
- W3C 是一个组织(中文:万维网联盟)
- 这个组织是专门负责统一 WEB 相关的各种标准,定义了很多 WEB 通讯的标准
- 注意:不是一个标准,是很多标准,比如:html 的结构, css 表现,js 行为等等
- WWebDriver 是 W3C 制定的标准协议之一
- webdriver
2.2、协议分析
Method URI Template Command
// 一次/session 的post 请求,代码创建了一个新的session --代表自动化的开始
POST /session New Session
DELETE /session/{session id} Delete Session
...
POST /session/{session id}/element Find Element
POST /session/{session id}/elements Find Elements
三、JsonWP 手工模拟
3.1、模拟session创建
curl -l -H "Content-type: application/json" -X POST -d '{"desiredCapabilities":{"platformName": "Android","deviceName": "emulator-5554","platformVersion":"6.0","appPackage":"com.tencent.wework","appActivity":".launch.LaunchSplashActivity","noReset":"true"}}' 'http://127.0.0.1:4723/wd/hub/session'
3.2、模拟session_id获取
先使用命令:`curl 'http://127.0.0.1:4723/wd/hub/sessions'` 获取session 包含的信息内容,从中找到session_id
session_id=$(curl 'http://127.0.0.1:4723/wd/hub/sessions' \ | awk -F\" '{print $6}')
3.3、模拟element_id元素ID获取
// 获取 element 元素
Hogwarts $ element_id=$(curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/elements --data-binary '{"using":"xpath", "value":"//*[@text=\"通讯录\"]"}' -H "Content-Type: application/json;charset=UTF-8" \ | awk -F\" '{print $6}')
3.4、模拟元素属性获取
// 获取元素 text 文本属性
Hogwarts $ curl http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/attribute/text
3.5、模拟元素属性获取
// 获取元素 text 文本属性
Hogwarts $ curl http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/attribute/text
四、总结
- webdriver 是 W3C 定义的协议标准之一
- webdriver 定义一系列与app 通讯的接口,支持多语言
- 可以通过shell 模拟自动化操作的动作