Selenium WebDriver VS Selenium RC

摘要:
SeleniumRemoteControl在WebDriverVsSeleniumRCWebDriver于2006年问世之前就已经存在。VSSeleniumWebDriverSeleniumRC的实际交互如下:WebDriver和页面元素之间的交互更加直接。过去,SeleniumTester总是抱怨SeleniumCore可以在Disabled文本框中输入值。Selenium RC的API更加成熟,但它包含了太多令人困惑的命令。WebDriver的API比Selenium RC更简单,并且没有很多令人困惑的命令。Selenium RC不支持headlessHtmlUnit浏览器。它需要一个真正可见的浏览器来操作。SeleniumRC有一个用于输出测试结果的嵌入式模块SeleniumRC将自动生成HTML文件的测试结果。
 
WebDriver到底是什么?
WebDriver是一个Web的自动化测试框架,它支持你执行你的测试用例在不同的浏览器上面,并不像Selenium一样只支持Firefox。
 Selenium WebDriver VS Selenium RC第1张
 
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 WebDriver VS Selenium RC第2张
                                     
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不停的获得下一段代码从你的测试脚本中,周而复始的重复一个一个周期Selenium WebDriver VS Selenium RC第3张
                      
 
因此我们可以看到WebDriver比Selenium RC更加快,webdriver是直接通过浏览器本身的引擎来控制它,但是RC需要通过JS 来调用Selenium Core,Selenium Core是那个直接控制浏览器的而不是你。
 
                      Selenium WebDriver VS Selenium RC第4张               VS              Selenium WebDriver VS Selenium RC第5张
                         Selenium WebDriver                                                Selenium RC
 
实际的交互作用是这样的:
 
                           Selenium WebDriver VS Selenium RC第6张
 
                                             
WebDriver和页面元素之间的交互是更加的直接。比如,如果你有一个Disabled的Text box在你的测试页面上,WebDriver在这种情况下并不能输入任何的文本内容好比一个实际的人不能做这件事一样。
                                         Selenium WebDriver VS Selenium RC第7张
 
                                                           
Selenium Core,就像其它的javaScript代码一样,它是能够找到并操作这种 Disabled 的页面元素。在过去,Selenium Tester总是抱怨Selenium Core能够去输入值到Disabled 的文本框中。这主要是由于不同的API。
 
 
Selenium RC的API 更加成熟,但是包含过多的让人混淆的命令。比如说,tester总是会疑惑是用type呢还是用typeKeys,或者说是click更好呢还是用mouseDown还是MouseDownAt。更糟糕的是,不同的浏览器去编译这些命令的时候采用不同的方式。
 
WebDriver的API相对于Selenium RC就显得更加简单了,它并没有大量的让人困惑的命令。
 
浏览器的支持: 
Selenium WebDriver VS Selenium RC第8张
                                                       
WebDriver 支持headless HtmlUnit 的浏览器
HtmlUnit之所以被称为“Headless”,是因为它是一种不可见的浏览器,它是缺省界面的。
它的速度非常快,它不需要加载页面元素等待的时间,它可以加快你的测试执行的速度。 由于它是不可见的,所以也意味着它仅仅只能通过自动化来进行操作了。
Selenium RC不支持headless HtmlUnit浏览器,它需要一个真正的可见的浏览器进行操作。
 
WebDriver并不是万能的,它也有受限制的地方:
WebDriver支持新的浏览器并不是那么容易
我们得了解到,WebDriver的操作是依赖OS的level的。同样也得了解到,不同的浏览器和系统之间的交流是用不同的方法的。如果出现一个新版本的浏览器,它也许有一个不同的流程和系统之间的交流和其它浏览器相比较。所以你需要给WebDriver团队一段时间来实现新的方法对新的浏览器。
 
Selenium RC有一个内嵌的输出测试结果的模块
Selenium RC会自动产生一个HTML文件的测试结果。这个报告的格式是RC本身来定义的。下面有个例子可以看到:
Selenium WebDriver VS Selenium RC第9张
                                                         
 
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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle 和SQL Server 中的SQL语句使用区别Linux下KVM的图形界面管理工具(virt-manager)(桌面版)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

openresty使用笔记(一)

背景介绍 游戏经过一段时间的运营,发现了原来的设计缺陷太多,所以决定重新设计架构。使用到nginx作为核心并通过lua+redis设计实现自己的负载分配方案。先看看下面这张简单的架构图吧~ 从图上看,结构是非常简单的。主要通过编写lua分配策略使游戏房间内的人数尽量坐满。 技术实现思路 要编写lua插件通常需求编译nginx使其支持,如果嫌麻烦可以直接上...

使用Python操作MSSQL数据库.

有时想更新或迁移部分SqlServer数据,用SQL只会整几句select,高级点的连个游标都玩不转有木有?拿起VS写个小程序不停的改又编译很烦,有木有? 想用脚本写了有木有? 本文介绍使用python,adodbapi操作数据库: adodbapi 库 python 可以操作mssqlserver的类库有几个,支持python3.x的目前没几个靠谱的...

Mac下Python和Pycharm之virtualenv

一、python如何配置virtualenv   1.安装virtualenv pip3 install virtualenvpip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvpip3 install --upgrade pip 2.创建目录 mkdir Myproject...

任务备忘(已经完成):用python写一个格式化xml字符串的程序

功能: 1.将xml中多余的空格,换行符去掉,让xml字符串变成一行。 2.将xml中添加缩进,使用print能正确打印添加缩进后的字符串。 思路: 采用正则表达式来判断xml中字符串的类型: 1.文件头 2.判断元素的种类:带有属性的标签,没有属性的标签,标签内结束的标签,只含有文本的标签,不含有文本的标签。 3.根据标签的级别添加换行符后面的空格 '...

关于反编译pyc的一点技巧

现在最流行的是用https://github.com/rocky/python-uncompyle6 但是有些python小版本不一样,比如2.7.6的某版本,开头的magic number在这个项目中没有收集 这时直接改开头的两字节magic number就可以反编译了 python2.7.16的是 03F3...

matlab矢量场数值可视化(动态数值模拟)

https://blog.csdn.net/eric_e/article/details/81294092 D3.js实现数据可视化 三维可视化 风场可视化(数据插值):风场是动态变化的,实时刷新的,数据实时动态性较高 windy:https://download.csdn.net/download/weixin_38690337/10724155http...