WebDriver到底是什么?
WebDriver是一个Web的自动化测试框架,它支持你执行你的测试用例在不同的浏览器上面,并不像Selenium一样只支持Firefox。
 
 
WebDriver也支持你通过一种编程语言来创建你的测试脚本(这是不可能的在Selenium IDE里面)。
  • 你能用条件判断语句,比如 if-then-else或者是 Switch-Case
  • 你也能使用循环语句,比如do-while.
下面的这些编程语言WebDriver都支持:
  • Java
  • .net
  • php
  • Python
  • Perl
  • Ruby
你并不需要了解所有的编程语言。你仅仅只需要了解他们中的一种就OK了。在下面的例子中,我们将使用Java。
 
WebDriver Vs Selenium RC
 
WebDriver在2006年出来之前,Selenium Remote Control 就已经存在了。 WebDriver和Selenium RC都支持下面的功能:
  • 他们两者都能用编程语言去设计你的测试脚本语言
  • 都能支持你的测试运行在不同的浏览器上面
那么他们之间到底又有什么不同呢?让我们一起来讨论这个问题:
 
架构(Architecture)
 
Selenium的结构比Selenium RC 更加简单:
  • 从OS的等级来控制浏览器
  • 你需要的仅仅只是编译你的编程语言的IDE(包括你的Selenium 命令)和一个浏览器
                                     
Selenium RC的结构就相对来说就复杂多了:
  • 在你开始你的测试之前你首先需要开启一个叫Selenium Remote Control(RC) Server(java -jar selenium-server-standalone-2.xx.xx.jar)
  • Selenium RC Server在你的Selenium 命令行和你的浏览器中间扮演着一个调解人或者说中间人的作用
  • 当开始测试的时候,Selenium RC Server会向浏览器中注入一段JavaScript代码(也称为Selenium Core)
  • 一旦JS注入成功,Selenium Core将会接受指令,从你的测试程序中通过RC Server转播
  • 当代码被接受,Selenium Core将会将这些代码转换成 JS来执行
  • 浏览器获取到Selenium Core的代码,然后将响应传播回给RC Server
  • RC Server将接受浏览器的响应,然后将结果显示在你面前
  • RC Server不停的获得下一段代码从你的测试脚本中,周而复始的重复一个一个周期
                      
 
因此我们可以看到WebDriver比Selenium RC更加快,webdriver是直接通过浏览器本身的引擎来控制它,但是RC需要通过JS 来调用Selenium Core,Selenium Core是那个直接控制浏览器的而不是你。
 
                                     VS             
                         Selenium WebDriver                                                Selenium RC
 
实际的交互作用是这样的:
 
                           
 
                                             
WebDriver和页面元素之间的交互是更加的直接。比如,如果你有一个Disabled的Text box在你的测试页面上,WebDriver在这种情况下并不能输入任何的文本内容好比一个实际的人不能做这件事一样。
                                        
 
                                                           
Selenium Core,就像其它的javaScript代码一样,它是能够找到并操作这种 Disabled 的页面元素。在过去,Selenium Tester总是抱怨Selenium Core能够去输入值到Disabled 的文本框中。这主要是由于不同的API。
 
 
Selenium RC的API 更加成熟,但是包含过多的让人混淆的命令。比如说,tester总是会疑惑是用type呢还是用typeKeys,或者说是click更好呢还是用mouseDown还是MouseDownAt。更糟糕的是,不同的浏览器去编译这些命令的时候采用不同的方式。
 
WebDriver的API相对于Selenium RC就显得更加简单了,它并没有大量的让人困惑的命令。
 
浏览器的支持: 
                                                       
WebDriver 支持headless HtmlUnit 的浏览器
HtmlUnit之所以被称为“Headless”,是因为它是一种不可见的浏览器,它是缺省界面的。
它的速度非常快,它不需要加载页面元素等待的时间,它可以加快你的测试执行的速度。 由于它是不可见的,所以也意味着它仅仅只能通过自动化来进行操作了。
Selenium RC不支持headless HtmlUnit浏览器,它需要一个真正的可见的浏览器进行操作。
 
WebDriver并不是万能的,它也有受限制的地方:
WebDriver支持新的浏览器并不是那么容易
我们得了解到,WebDriver的操作是依赖OS的level的。同样也得了解到,不同的浏览器和系统之间的交流是用不同的方法的。如果出现一个新版本的浏览器,它也许有一个不同的流程和系统之间的交流和其它浏览器相比较。所以你需要给WebDriver团队一段时间来实现新的方法对新的浏览器。
 
Selenium RC有一个内嵌的输出测试结果的模块
Selenium RC会自动产生一个HTML文件的测试结果。这个报告的格式是RC本身来定义的。下面有个例子可以看到:
                                                         
 
WebDriver是没有这样一个自动产生测试报告的模块,你需要依赖于IDE的输出对话框,或者利用编程语言来编写一个测试报告。
 
总结
  • WebDriver是一种支持多编程语言同时可以在多种浏览器上操作的Web自动化测试工具
  • 你能编出强大的测试脚本用例,因为WebDriver准许你用你选择的编程语言来设计你的测试用例
  • WebDriver比Selenium RC更加快,因为它简单的架构
  • WebDriver直接和浏览器之间进行交互,然而Selenium RC需要借助RC Server的帮助实现同样的功能
  • WebDriver的API相对于Selenium RC的API更加简单
  • WebDriver能够支持HtmlUnit,然后Selenium RC不能支持
  • WebDriver的缺点是:1. 它不能很好的支持新出的浏览器,RC能。 2.WebDriver没有内嵌的产生测试报告的模块
 
 
 
 
 
 
 

Selenium WebDriver VS Selenium RC的更多相关文章

  1. Selenium_用selenium webdriver实现selenium RC中的类似的方法

    最近想总结一下学习selenium webdriver的情况,于是就想用selenium webdriver里面的方法来实现selenium RC中操作的一些方法.目前封装了一个ActionDrive ...

  2. Selenium Tutorial (1) - Starting with Selenium WebDriver

    Starting with Selenium WebDriver Selenium WebDriver - Introduction & Features How Selenium WebDr ...

  3. Selenium Webdriver概述(转)

    Selenium Webdriver https://www.yiibai.com/selenium/selenium_overview.html# webdriver自动化俗称Selenium 2. ...

  4. Selenium WebDriver 之 PageObjects 模式 by Example

    目录 1. 项目配置 2. 一个WebDriver简单例子 3. 使用Page Objects模式 4. 总结 5. Troubleshooting 6. 参考文档 本篇文章通过例子来阐述一下Sele ...

  5. 【零基础】Selenium:Webdriver图文入门教程java篇(附相关包下载)

    一.selenium2.0简述 与一般的浏览器测试框架(爬虫框架)不同,Selenium2.0实际上由两个部分组成Selenium+webdriver,Selenium负责用户指令的解释(code), ...

  6. selenium webdriver学习(一)------------快速开始(转载JARVI)

    selenium webdriver学习(一)------------快速开始 博客分类: Selenium-webdriver selenium webdriver 学习 selenium webd ...

  7. Selenium UI自动化测试 Selenium Automatic Testing

    https://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html UI Automatic Testing 1. 什么样的项目适合自 ...

  8. Selenium 上手:Selenium扫盲区

    Selenium 自述Selenium 是由Jason Huggins软件工程师编写的一个开源的浏览器自动化测试框架.主要用于测试自动化Web UI应用程序. Selenium 工作原理通过编程语言( ...

  9. selenium webdriver自动化测试

    selenium家族介绍           Selenium IDE:Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能.   Selenium ...

随机推荐

  1. 竟然是它:# vi /etc/resolv.conf

    有数据库主机: 前端tomcat应用连接慢,开发人员本地pl/sql连接也超慢: 检查了系统i/o ,nethogs,top,检查了数据listener.ora,awr,wait_event,sql ...

  2. HDU1232

    https://vjudge.net/problem/HDU-1232 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都 ...

  3. Python之字典的应用

    # 转化为字符串 d = {'key1' : 'value1', 'key2 ': 'value2','key3' : 'value3'} s = str(d) print(s) #python3 结 ...

  4. 常用的php数组函数

    以下是自己比较常用的数组函数 数组元素增加减少array_pusharray_poparray_shiftarray_unshift array_splice  (对数组的增删改) array_sli ...

  5. opencv---JPEG图像质量检测代码

    参考:http://blog.csdn.net/trent1985/article/details/50904173 根据国外一篇大牛的文章:No-Reference Perceptual Quali ...

  6. Android Studio com.android.support:percent 导入错误 - 转

    看第一行代码(第二版的)书,讲了一个关于PercentFrameLayout和PercentRelativeLayout的部分,书上在build.gradle中导入了com.android.suppo ...

  7. 20155234 Exp3 免杀原理与实践

    使用msf编码器生成jar包 使用指令:msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.157.141 lport=5234 x> ...

  8. 20155306 白皎 0day漏洞——漏洞利用原理之GS

    20155306 白皎 0day漏洞--漏洞利用原理之GS 一.GS安全编译选项的保护原理 1.1 GS的提出 在第二篇博客(栈溢出利用)中,我们可以通过覆盖函数的返回地址来进行攻击,面对这个重灾区, ...

  9. EZ 2017 01 07 t

    这名字诡异(然而就是这样) 这次主要是yekehe和yu‘ao都来了,所以很开心的讨论(上了200). 但是,yu’ao dalao又AK了!(666666) 不过总体难度也不高,主要是T3没思路. ...

  10. 微信小程序之用户信息授权 wx.getUserInfo

    用户授权 <button open-type="getUserInfo" bindgetuserinfo='getUser'>授权用户信息</button> ...