appium(一)原理
adb 是一个C/S架构的命令行工具
(1)appium
API调用selenium的接口,基于webdriver协议添加对移动设备自动化API扩展而成的,Java/Python代码作为client
webdriver是基于http协议的,第一次连接会建立一个session会话,并post一个json告知服务器相关测试信息
(2)appium-desktop
appium-server的桌面版,appium-server是用node js写的,接受client发来的命令并翻译成移动端可以理解的形式,移动端执行完命令后将结果返回给appium-server,appium-server再将结果返回给client
(3)Session
session就是一个会话,在webdriver/appium,你的所有工作永远都是在session start后才可以进行的。一般来说,通过POST /session这个URL,然后传入Desired Capabilities就可以开启session了
开启session后,会返回一个全局唯一的session id,以后几乎所有的请求都必须带上这个session id,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器
进一步思考一下,由于session id是全局唯一,那么在同一台机器上启动多个session就变成了可能,这也就是selenium gird所依赖的具体理论根据
(4)Desired Capabilities
Desired Capabilities携带了一些配置信息。从本质上讲,这个就是key-value形式的对象。实际上Desired Capabilities在传输时就是json对象
Desired Capabilities最重要的作用是告诉server本次测试的上下文。这次是要进行浏览器测试还是移动端测试?如果是移动端测试的话是测试android还是ios,如果测试android的话那么我们要测试哪个app? server的这些疑问Desired Capabilities都必须给予解答,否则server不买账,自然就无法完成移动app或者是浏览器的启动