> Selenium Webdriver 3.X源码分析系列第12篇,该系列原则上会将整个源码分享一遍
在了解command.py的源码前,我们先大致的了解下webdriver json wire protocol的基本知识。
基本概念:
所有与浏览器或RemoteWebDriver服务器通信的WebDriver实现都应该使用Webdriver Json Wire Protocol。这个连接协议使用HTTP上的JSON定义了一个RESTful web服务。
注意点:
- 这是所有webdriver客户端实现的基础协议,所有语言都遵循该协议与远程服务进行交互
- 该协议基于http协议,采用json格式进行数据交换
- 该协议已经实现为一套公共的RESTful web服务
所以从理论上,只要遵循webdriver json wire protocol协议,使用任何一门编程语言都可以进行web自动化测试。
在本文,我们接下来看看在selenium webdriver python端的源码,看看其相关的指令定义源码:
代码路径为:selenium > webdriver > remote > command.py
注意源码中的注释,这里大体如下:
- 标准的webdriver指令定义
- 指令常量本身是没有任何意义的,其意义取决于对应的webdriver服务的实现,即指令需要有对应的服务实现才会有意义
- 在github对应地址为:https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
在command.py中,提供了以下几类指令:
- 最核心的指令集,常规的浏览器、元素定位等等操作均定义在此
- alerts指令集,标准弹窗处理的指令
- 高级用户交互指令集,鼠标动作指令集
- 屏幕采集指令集,获取、设置屏幕指令
- 触摸指令集,触摸屏操作动作集
- HTML5指令集,html5支持指令集,得看具体的selenium版是否实现支持
- 移动指令集
都是些常量定义,又必要了解嘛?当然有必要,因为这些常量在其他地方都会用到,在remote_connection.py中,构建交互command时,如下
未完待续,持续更新中......