Atitit WebDriver技术规范原理与概念

1. Book haosyo ma1

2. WebDriver是W3C的一个标准,由Selenium主持。1

3. WebDriver如何工作 (zhuan)1

1. Book haosyo ma

2. WebDriver是W3C的一个标准,由Selenium主持。

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

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

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

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

转载请注明来源: http://www.cnblogs.com/attilax/

3. WebDriver如何工作 (zhuan)

WebDriver是W3C的一个标准,由Selenium主持。

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

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

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

我们明确几个概念。

Client

调用 WebDriverAPI的机器。

Server

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

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中包含如下信息

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

sessionId:当前session的id;

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

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

4. WebDriver API 说明

https://www.w3.org/TR/webdriver/#commands

Conformance: 一致性

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

Atitit WebDriver技术规范原理与概念的更多相关文章

  1. Atitit 游戏的原理与概论attilax总结

    Atitit 游戏的原理与概论attilax总结 1. 游戏历史2 1.1.1. 盘点PC游戏史上最重要的50款游戏2 1.1.2. 回味人类文明进程 五款经典的历史游戏2 2. 游戏类型(主要分为6 ...

  2. Atitit 软件国际化原理与概论

    Atitit 软件国际化原理与概论 语言和文化习俗因地域不同而差别很大.对某一特定的地域的 语言环境称为"locale".它不仅包括语言和货币单位,而且还包括 数字标示格式, 日期 ...

  3. Atitit.并发编程原理与概论 attilax总结

    Atitit.并发编程原理与概论 attilax总结 1. 并发一般涉及如下几个方面:2 2. 线程安全性 ( 2.2 原子性 2.3 加锁机制2 2.1. 线程封闭3.3.1Ad-hoc线程封闭 3 ...

  4. Atitit.词法分析的原理 理论

    Atitit.词法分析的原理 理论 1. 分词 .词法分析lexical analysis 1 1.1. 分词主要流程 1 1.2. 分词的属性如下表token 1 1.3. 词法分析器主要包括:构造 ...

  5. Atitit.md5 实现原理

    Atitit.md5 实现原理 1. 算法流程图2 2. MD5算法过程:2 2.1. 3. 处理分组数据3 3. MD5加密字符串实例5 4. Md5的历史7 4.1.1. MD27 4.1.2. ...

  6. Atitit.Base64编码原理与实现设计

    Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要用自己的base64编码方案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说 ...

  7. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

  8. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  9. Atitit.软件兼容性原理与实践 v5 qa2.docx

    Atitit.软件兼容性原理与实践   v5 qa2.docx 1. Keyword2 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法,新人新办法,只新增,少修改 ...

随机推荐

  1. HTML、CSS小知识--兼容IE的下拉选择框select

    HTML <div class="s_h_ie"> <select id="Select1" disabled="disabled& ...

  2. 简单的python服务器程序

    一个接受telnet输入的服务器端小程序 #!/usr/local/bin/python3.5 #coding:utf-8 import socket host = '' port = 51423 s ...

  3. 修改myeclipse的servlet模板

    今天修改myeclipse的servlet模板时,发生 Could not create the view: An unexpected exception was thrown.错误. 解决方案:1 ...

  4. windowsAPI popup trace tip(toolTip)

    class UIHELPER_EXPORT ToolTipWindow : public chMessageHandler{ DECLARE_PROCESS_OBJECT(ToolTipWindow) ...

  5. c语言检测文件是否存在int __cdecl access(const char *, int);

    最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者 ...

  6. 剑指offer题目31-40

    面试题31:连续字数组的最大和 public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int len ...

  7. 洛谷P1738 洛谷的文件夹

    原题目:点我 题目是一个略水的题,我机制地用面向对象做了...所以代码量急剧加大,100行233 模拟即可,字符串处理麻烦点.如果没有找到子文件夹就新建文件夹,如果有就进入该文件夹. 提示:高能,指针 ...

  8. [DiocpRPC]介绍与安装

    介绍:    Diocp-RPC组件基于DIOCP进行扩展开发,通信协议基于HTTP,遵循RESTFul开发模式,可以用户三层开发.IDE可以支持大于等于D7的IDE,服务端组件支持Win32/Win ...

  9. 在UTF8(linux)下,逆置汉字字符串

    #include <stdio.h> int main() { char c[]="我是如此热爱编程!"; ,min=,max; while(c[index]) { i ...

  10. [原]iOS自带社会化分享框架——Social.framework

    http://m.blog.csdn.net/blog/u012189584/43236379 Social.framework支持的分享平台(打开手机上的“设置”即可看到)(如Twitter.fac ...