appium 原理与 JsonWP 协议分析
目录
- Appium 原理
- JsonWP 协议分析
- JsonWP 手工模拟
Appium 原理

Appium 原理

什么是 W3C
- W3C 是一个组织(中文:万维网联盟)
- 这个组织是专门负责统一 WEB 相关的各种标准,定义了很多 WEB 通讯的标准
- 注意:不是一个标准,是很多标准,比如:html 的结构, css 表现,js 行为等等
- WWebDriver 是 W3C 制定的标准协议之一(https://w3c.github.io/webdriver/)
协议分析
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
协议手工模拟
模拟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'
模拟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}')
模拟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}')
模拟元素属性获取
// 获取元素 text 文本属性
Hogwarts $ curl http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/attribute/text
模拟元素动作
// 完成元素的点击动作
Hogwarts $ curl -X POST http://127.0.0.1:4723/wd/hub/session/$session_id/element/$element_id/click
总结
- webdriver 是 W3C 定义的协议标准之一
- webdriver 定义一系列与app 通讯的接口,支持多语言
- 可以通过shell 模拟自动化操作的动作