WebDriver简介
WebDriver简介
WebDriver是一个支持对用户代理进行控制的远程控制接口,它提供了平台无关和语言无关的线路协议(wire protocol),作为跨进程程序远程控制web浏览器行为的方式,它提供了一组接口来发现和操作web文档中的DOM元素,以及控制用户代理(浏览器)的行为。它主要的意图是允许web的开发者可以单独在一个进程中编写自动化用户代理(浏览器)的测试,也允许使用上述方式,在浏览器内的脚本中对浏览器进行控制。
总而言之,WebDriver被W3C纳入标准,定义了对浏览器(也就是上文提到的用户代理)操作的一系列规范。W3C中的WebDriver规范是从Selenium WebDriver浏览器自动化框架中继承过来的,因为后者实在是太流行了以致于最终变成标准。
1、WebDriver协议的通信各方组成介绍
-
近端(
local end):表示协议的客户端,通常是特定语言基于WebDriver协议提供的上层API接口。WebDriver规范并没有对这些提供API接口的库做任何的限制。 -
远端(
remote end):表示协议的服务端,WebDriver规范主要是定义远端对WebDriver协议响应的行为。对于远端,
WebDriver规范定义了两种类型的节点,并且WebDriver的远端必须提供遵循HTTP的协议,末端节点会将HTTP协议映射到不同的命令上:-
中间节点(
itermediary node):中间节点扮演的是代理的角色,既要实现协议定义的远端功能也要实现协议定义的近端功能。这个比较容易理解,既然是代理,那相对于客户端来说它是服务端,因此要实现协议定义的远端功能;对于真正的服务端,它只是起到中转作用,相当于客户端,因此要实现协议的客户端。中间节点可能有多个(这个很很容易理解,网络传输节点有多个),因此并不是按照远端一步一步实现的,对于一个特定的中间节点,在它和近端之间的所有节点称作该节点的下行(下游?downstream),所有处于该节点和末端节点之间的节点称作该节点的上行(upstream)。 -
末端节点(
endpoint node):表示最终的远端节点,末端节点通常是通过用户代理(例如浏览器)获相似的程序实现。
-
2、WebDriver规范定义必须支持的能力集
WebDriver协议规定必须要支持的能力集如下(当然不同的浏览器或Driver实现可能还支持一些扩展的能力):
| 能力项 | 能力项命名 | 值类型 | 具体描述 |
|---|---|---|---|
| 浏览器名称 | browserName |
string |
标识用户代理。 |
| 浏览器版本 | browserVersion |
string |
标识用户代理的版本号。 |
| 平台名称 | platformName |
string |
标识末端节点所在的操作系统名称。 |
接受不安全的TLS证书 |
acceptInsecureCerts |
boolean |
表明是否在会话过程中接受不可信或自签名的TLS证书。 |
| 页面加载策略 | pageLoadStrategy |
string |
定义当前会话的页面加载策略,有三个选项:none、eager和normal。 |
| 代理配置 | proxy |
JSON Object |
定义当前会话的代理配置。 |
| 窗口尺寸/定位 | setWindowRect |
boolean |
表明远端是否支持所有的窗口调整和定位命令。 |
| 会话超时 | timeouts |
JSON Object |
描述给定会话操作的超时 |
| 严格的文件互操作性 | strictFileInteractability |
boolean |
描述当前会话严格的文件互操作性。 |
| 未处理的提示行为 | unhandledPromptBehavior |
string |
描述当前会话的用户提示处理程序,默认是dismiss and notify state。 |