博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Atitit WebDriver技术规范原理与概念
阅读量:5909 次
发布时间:2019-06-19

本文共 2532 字,大约阅读时间需要 8 分钟。

Atitit WebDriver技术规范原理与概念

 

1. Book haosyo ma

2. WebDriverW3C的一个标准,由Selenium主持。

W3C的发布了的工作草案。该规范定义了WebDriver的应用编程接口。WebDriver是一个平台和语言中立的访问接口,允许应用程序或脚本获得Web浏览器的状态并控制浏览器的行为。WebDriver API目前主要用于开发人员编写测试脚本,通过一个独立的控制流程实现基于浏览器的自动测试,未来该规范还可能使运行在浏览器中的脚本程序对浏览器行为进行控制。

该规范还包括一个基于API调用和响应时,基于JSON的输入输出参数的序列化建议,可能对浏览器提供商提供帮助。

 

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

3. 

WebDriverW3C的一个标准,由Selenium主持。

具体的协议标准可以从http://code.google.com/p/selenium/wiki/JsonWireProtocol#Command_Reference   查看。

从这个协议中我们可以看到,WebDriver之所以能够实现与浏览器进行交互,是因为浏览器实现了这些协议。这个协议是使用JOSN通过HTTP进行传输。

它的实现使用了经典的Client-Server模式。客户端发送一个requset,服务器端返回一个response

我们明确几个概念。

Client

调用 WebDriverAPI的机器。

Server

运行浏览器的机器。Firefox浏览器直接实现了WebDriver的通讯协议,而ChromeIE则是通过ChromeDriver实现的。

Session

服务器端需要维护浏览器的Session,从客户端发过来的请求头中包含了Session信息,服务器端将会执行对应的浏览器页面。

WebElement

这是WebDriverAPI中的对象,代表页面上的一个DOM元素。

举个实际的例子,下面代码的作用是命令”firefox转跳到google主页:

 

       WebDriver driver = new FirefoxDriver();

        //实例化一个Driver
 
        driver.get("http://www.google.com");

在执行driver.get("http://www.google.com")这句代码时,client,也就是我们的测试代码向remote server发送了如下的请求:

POSTsession/285b12e4-2b8a-4fe6-90e1-c35cba245956/url  post_data{"url":"http://google.com"}  

通过post的方式请求localhost:port/hub/session/session_id/url地址,请求浏览器完成跳转url的操作。

如果上述请求是可接受的,或者说remote server是实现了这个接口,那么remote server会跳转到该post data包含的url,并返回如下的response

{"name":"get","sessionId":"285b12e4-2b8a-4fe6-90e1-c35cba245956","status":0,"value":""} 

response中包含如下信息

nameremote server端的实现的方法的名称,这里是get,表示跳转到指定url

sessionId:当前sessionid

status:请求执行的状态码,非0表示未正确执行,这里是0,表示一切ok不许担心;

value:请求的返回值,这里返回值为空,如果client调用title接口,则该值应该是当前页面的title

如果client发送的请求是定位某个特定的页面元素,则response的返回值可能是这样的:

{"name":"findElement","sessionId":"285b12e4-2b8a-4fe6-90e1-c35cba245956","status":0,"value":{"ELEMENT":"{2192893e-f260-44c4-bdf6-7aad3c919739}"}} 

name,sessionIdstatus跟上面的例子是差不多的,区别是该请求的返回值是ELEMENT:{2192893e-f260-44c4-bdf6-7aad3c919739},表示定位到元素的id,通过该idclient可以发送如click之类的请求与 server端进行交互。

 

IE11 开始支持WebDriver标准,IE WebDriver Tool for Internet Explorer 11下载地址:

 

4. WebDriver API 说明

 一致性

2. Terminology

3. Interface

4. Protocol

5. Capabilities

6. Sessions

7. Navigation

8. Command Contexts

9. Elements

10. Element Retrieval

11. Element State

12. Element Interaction

13. Document Handling

14. Cookies

15. Actions

16. User Prompts

17. Screen Capture

 

5. 参考资料

WebDriver如何工作 (zhuan) - allback - 博客园.html

WebDriver API 提交 W3C 标准化 · LinuxTOY.html

微软:Win10全新Edge浏览器支持WebDriver测试 - Edge浏览器,Win10系统 - IT之家.html

Atiend

 

你可能感兴趣的文章
sklearn中随机森林的参数
查看>>
[技术选型] Node.js
查看>>
Spring cloud子项目
查看>>
架构重构改善既有代码的设计
查看>>
关键词过滤算法【转】
查看>>
html5 indexDB的使用
查看>>
学习LaTex
查看>>
数据库分库分表(sharding)系列(四) 多数据源的事务处理
查看>>
python运算符优先级
查看>>
设计模式C++实现——模板方法模式
查看>>
Oracle使用row_number()函数查询时增加序号列
查看>>
正则表达式 取反 非
查看>>
p2p网贷3种运营模式
查看>>
[转][译] Closures in Lua - Lua中的闭包
查看>>
ThinkPHP学习(五)图片验证码
查看>>
(二)Linux——Linux常用指令
查看>>
Ubuntu下使用UFW配置防火墙(简化iptables的操作)
查看>>
编程规范(一 之kmalloc,fflush,fclose,char_init)
查看>>
POJ2584_T-Shirt Gumbo(二分图多重最大匹配/最大流)
查看>>
在SAE搭建Python+Django+MySQL(基于Windows)
查看>>