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://blog.csdn.net/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. python webdriver点击指令_测开系列Selenium Webdriver Python(20)--Webdriver运行原理

    Webdriver运行原理 转帖请注明出处!谢谢 在开发Webdriver的自动化脚本过程中,Webdriver后台在创建WebDriver实例的过程中,先确认浏览器的原生组件中是否存在可匹配的版本. ...

  2. Atitit.软件兼容性原理与实践 v3 q326.docx

    Atitit.软件兼容性原理与实践 v3 q326.docx 1. 架构兼容性1 2. Api兼容性1 2.1. 新api  vs  修改旧的api1 3. Web方面的兼容性(js,html)1 3 ...

  3. Atitit 《控制论原理与概论attilax总结

    Atitit <控制论原理与概论attilax总结 <控制论> 奠基之作,出自创始人维纳.虽然内容权威,但我认为带有相当强烈的个人色彩,且门槛较高,不适合入门.深入研究控制论必看书籍 ...

  4. Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结

    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...

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

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

  6. 【分析】RBD Mirroring - 原理、概念、命令

    RBD Mirroring - 原理.概念.命令 ​ Ceph采用的是强一致性同步模型,所有副本都必须完成写操作才算一次写入成功,这就导致不能很好地支持跨域部署,因为如果副本在异地,网络延迟就会很大, ...

  7. 嵌入式技术(单片机原理)基本概念梳理(保研/考研面试)

    嵌入式技术基础(单片机原理),常见概念及知识点整理(保研面试用). 目录 第1章 概论 第2章 MCS-51系列单片机的资源配置 第3章 MCS-51系列单片机的指令系统及汇编语言程序设计 第4章 单 ...

  8. 深度|分析区块链系统的核心原理和概念

    2019独角兽企业重金招聘Python工程师标准>>> 阅读原文 区块链最初起源于中本聪2008年提出的比特币,是比特币的核心技术和底层架构,它们相伴而生.区块链技术本质上是一个去中 ...

  9. selenium原理python_通过python Selenium 库源代码来看Selenium Webdriver 实现原理

    作为一名使用Selenium开发UI自动化多年的工程师,一直都对Selenium Webdriver的实现原理感觉不是很清楚.怎么就通过脚本控制浏览器进行各种操作了呢?相信很多Selenium的使用者 ...

  10. 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( K-Means 方法缺陷 | 基于密度聚类原理及概念 | ε-邻域 | 核心对象 | 直接密度可达 | 密度可达 | 密度连接 )

    文章目录 I . K-Means 算法在实际应用中的缺陷 II . K-Means 初始中心点选择不恰当 III . K-Means 优点 与 弊端 IV . 基于密度的聚类方法 V . 基于密度的聚 ...

最新文章

  1. Linux gcc 制作动/静态链接库
  2. 浅谈线程池(上):线程池的作用及CLR线程池
  3. 【Oracle】RAC11gR2Grid启动顺序及启动故障诊断思路
  4. Console-算法[for,if]-一堆桃子和一只猴子
  5. php 编程祝新年快乐_第一门编程语言选什么好?
  6. quartus仿真20:模8的二进制计数器
  7. linux project 软件下载,项目计划管理画甘特图工具Ganttproject安装(for linux)
  8. 软件易用性文章分享第二篇-手机易用性: 一个经典的实验
  9. gom引擎没有和账号服务器连接,GOM引擎提示脚本错误,找不到脚本
  10. mysql拼接字符串
  11. python爬取天天基金历史净值_python爬取天天基金网全部基金的历史全部净值
  12. 0CTF-2016-Web-piapiapia
  13. php完全开发手册下载,thinkphp5完全开发手册
  14. linkedin数据获取策略
  15. linux 串口操作
  16. php 公众号 模板消息id如何获取_微信公众号后台模板消息如何实现发送的功能...
  17. Verilog中的Signed Decimal与Signed Magnitude区别
  18. python爬虫80行代码拿下喜马拉雅有声书
  19. 张家口计算机专业生源报告,权威数读丨兰州大学2017年毕业生就业质量报告
  20. linux环境下编译部署php生产环境

热门文章

  1. IPFS矿机托管的优势与劣势
  2. grafana 部署
  3. OpenCV(iOS)平滑处理(模糊,毛玻璃)(10)
  4. 使用 Blueprint 要注意 render_template 函数
  5. 微软披露三个 0day 漏洞 分别影响 Word、IE 和 Office
  6. 绚丽的javascript拾色器(不兼容IE8及以下)
  7. ***利用高考传播*** 考生上网谨防中毒
  8. BZOJ4559 JLOI2016成绩比较(容斥原理+组合数学+斯特林数)
  9. P1828 香甜的黄油 (spfa)
  10. java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...