selenium官方wiki翻译

闲来无事,看看测试,最近来和appium框架做斗争,需要了解selenium的相关知识,来吧直接看google wiki的介绍

The WebDriver Wire Protocol

(译者注:该协议目前正在处于起草状态,但是看其发展的这么好,以后肯定会成为规范)

介绍

所有与浏览器进行通信WebDriver接口,或者RemoteWebDriver服务器都应该使用普通的线性协议。这个线性协议使用JSON来定义HTTP上的RESTful网页服务。

该协议会假设WebDriver的API已经很稳定了,但是希望客户端的实现能够更趋向于是面向对象的(译者注:意思是在面向对象上面还有待提高),类似于现有的Java API。该线性协议中使用command和responses来实现了request/response的概念。

基本术语和概念

客户端
使用WebDriver API的机器
服务器
执行RemoteWebDriver的机器,该术语也指代直接实现线性协议的浏览器,比如firefox和IphoneDriver

Session
服务器需要管理一个浏览器上的每一个session。向session发送的命令会直接转到对应的浏览器。

WebElement
WebDriver API中的每一个对象代表网页上的一个DOM元素。

WebElement JSON Object
通过有线协议进行传输时,一个JSON代表一个WebElement对象。该JSON含有以下属性:

属性名 类型 描述
ELEMENT string 由服务器分配给元素一个模糊ID。这个ID会在后续的命令中用到。

Capabilities JSON Object
(译者注,这个术语不好翻译,暂且理解包含很多测试相关属性的JSON属性吧)

不是所有的服务器实现都支持WebDriver的所有功能。因此客户端和服务器之间需要使用JSON对象来包含下面列举的属性,这些属性描述了session支持哪些功能。

属性名 类型 描述
browserName string 所使用的浏览器名称,应该是下面浏览器之一:chrome/firefox/htmlunit/ie/iphone
version string 浏览器版本,如果位置浏览器该属性为空
platform string 该属性代表浏览器运行的操作系统版本,应该是以下系统之一:WINDOWS/XP/VISTA/MAC/LINUX/UNIX。当正在注册一个新session时,客户端会指定ANY关键字指代任何可用的平台。
javascriptEnabled boolean 是否支持在当前页面的上下文中执行用户提供的JavaScript
taskesScreenshot boolean 是否支持在当前页面中进行截图操作
handlesAlerts boolean 是否支持与弹出框进行交互,例如window.altert和window.confirm。
databaseEnabled boolean 是否支持和数据库进行交互
locationContextEnabled boolean 是否支持更改和查询浏览器的位置信息
applicationCacheEnabled boolean 是否支持和应用缓存进行交互
browserConnectionEnabled boolean 是否支持查询浏览器连接状态,以及在必要的时候能否禁用
cssSelectorsEnabled boolean 在查询元素的时候是否支持CSS选择器
webStorageEnabled boolean 是否支持和存储对象进行交互
rotatable boolean 是否支持在纵向和横向方向上旋转当前应用界面中的布局(仅支持移动版本)
acceptSslCerts boolean 默认情况下是否接受SSL证书
nativeEvents boolean 当模拟用户输入时,是否能够产生本地事件
proxy proxy 对象 使用的代理细节信息。如果没有指定代理,系统会使用当前状态或者默认状态。该对象的格式是一个特殊的Proxy的JSON对象。

Desired Capabilities

你可能感兴趣的:(协议)