在Selenium Webdriver如何和Selenium Server进行http交互呢?在本文要分析的remote_connection模块就要呈现最核心的交互代码了,是必须深入理解的。
我们先看下该模块定义的RemoteConnection类中注释说明,如下:
该类实现了用于与远程Webdriver服务进行交互的HTTP连接。
下面我们对该类进行详细的分析说明,模块路径为selenium > webdriver > remote > remote_connnection.py
先看下需要依赖哪些库,如下所示:
1. 需要标准库base64转码、logging日志、platform平台、socket、string、urllib3这个最重要,用于http交互
2. 对于不用的py版本,在26-29行代码做了兼容判断
3. 31-35行导入了selenium webdriver自定义的一些能力
接下来看看remote_connection类定义了哪些方法、成员:
- LOGGER为全局的日志实例对象
- _timeout 全局超时时间
- __init__ 初始化函数
- set_timeout 设置全局超时时间
- reset_timeout 重置全局超时时间
- get_timeout 获取全局超时时间
- get_remote_connection_headers 获取远程连接http headers信息
- execute 调用_request发送指令至remote服务器
- _request 内部函数,用于发送http请求
下面我们详细看看__init__函数:
下面看下execute函数,该函数用于执行指令集,即通过http请求将selenium webdriver指令发送给远程服务。
下面看下_request函数,该函数是对urllib3的封装,简单理解一个http client即可,用于与webdriver远程服务进行http交互,通过json进行数据交互,不复杂,大家自行深入掌握即可