Selenium Webdriver 3.X源码分析之command.py

2019-10-11 11:10:05 浏览数 (1)

> Selenium Webdriver 3.X源码分析系列第12篇,该系列原则上会将整个源码分享一遍

在了解command.py的源码前,我们先大致的了解下webdriver json wire protocol的基本知识。

基本概念:

所有与浏览器或RemoteWebDriver服务器通信的WebDriver实现都应该使用Webdriver Json Wire Protocol。这个连接协议使用HTTP上的JSON定义了一个RESTful web服务。

注意点:

  1. 这是所有webdriver客户端实现的基础协议,所有语言都遵循该协议与远程服务进行交互
  2. 该协议基于http协议,采用json格式进行数据交换
  3. 该协议已经实现为一套公共的RESTful web服务

所以从理论上,只要遵循webdriver json wire protocol协议,使用任何一门编程语言都可以进行web自动化测试。

在本文,我们接下来看看在selenium webdriver python端的源码,看看其相关的指令定义源码:

代码路径为:selenium > webdriver > remote > command.py

注意源码中的注释,这里大体如下:

  1. 标准的webdriver指令定义
  2. 指令常量本身是没有任何意义的,其意义取决于对应的webdriver服务的实现,即指令需要有对应的服务实现才会有意义
  3. 在github对应地址为:https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

在command.py中,提供了以下几类指令:

- 最核心的指令集,常规的浏览器、元素定位等等操作均定义在此

- alerts指令集,标准弹窗处理的指令

- 高级用户交互指令集,鼠标动作指令集

- 屏幕采集指令集,获取、设置屏幕指令

- 触摸指令集,触摸屏操作动作集

- HTML5指令集,html5支持指令集,得看具体的selenium版是否实现支持

- 移动指令集

都是些常量定义,又必要了解嘛?当然有必要,因为这些常量在其他地方都会用到,在remote_connection.py中,构建交互command时,如下

未完待续,持续更新中......

0 人点赞