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。 |
网友评论