JSON wire protocol(JSONWP)是WebDriver开发者编写的一种通信机制。这个通信协议是一个预定义的特殊设置,通过RESTful API暴露标准端口.WebDriver和JSONWP目的是通过Firefox driver,IE driver和Chrome driver浏览器执行网站自动化测试。
Appium不仅能够实现移动端的JSONWP,并且延伸到了selenium的JSONWP,它能够控制不同移动设备的行为,例如通过会话安装和卸载app。
下面让我们来看看一些用来连接移动应用API的端口
- /session/:sessionId
- /session/:sessionId/element
- /session/:sessionId/elements
- /session/:sessionId/element/:id/click
- /session/:sessionId/source
- /session/:sessionId/url
- /session/:sessionId/timeouts/implicit_wait
备注:
完整的端口应用可以参考下面的链接
https://code.google.com/p/selenium/wiki/JsonWireProtocol
https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile.
Appium提供客户端的库类似于WebDriver,充当连接REST API接口,这些库的拥有类似于下面的方式的作用:
AppiumDriver.getPageSource();
这个方式能够解决HTTP访问JSONWP的问题,并且得到来自应用API端口的响应。在这个案例中,API端口通过下面的方式控制getPageSource():
/session/:sessionId/source
这个驱动将执行测试脚本用JSON格式进入到AppiumDriver服务得到源码,随后返回字符串格式的页面源码。在非HTML平台上,Appium库将会以UI布局的XML文件形式返回数据。这些文件的特殊格式会跟随平台的变化而变化