2015-12-16 23:17:04
QTP mercury 是商业的,单词意思是水银,而selenium 是开源的,单词意思是硒,有些相对的意思。
1、selenium ide
selenium ide 是 firxfox 的一个插件,提供了录制和回放脚本的功能,并会把所记录的Selenese (Selenium Commands)转化为HTML/Java/C#/Python/Perl/Php/Ruby等语言脚本,但是 selenium 录制的脚本不是100%符合我们的需求的,还是以手写脚本为主。
2、selenium core
Core是selenium的一个核心的东西,ide 已经集成了它。selenium core 内部由一堆javascript函数构成,解释html,xml写的脚本,加载到浏览器后,通过调用这些函数来实现对浏览器的各种操作。
3、selenium RC(remote control)
http://www.cnblogs.com/fnng/archive/2012/02/01/2335215.html
http://www.testwo.com/blog/4578
Selenium RC 的组成部分为:
Selenium Server,他的作用是启动和关闭浏览器,解释和运行由测试程序发来的Selenese命令,作为HTTP代理,截取和验证浏览器和测试程序之间传递的HTTP信息。
Client libraries: 负责提供编程语言与Selenium Server 之间的接口。
支持多语言(Java、JavaScript 、Ruby 、Python、 PHP、Perl and C#),还有基本支持所有的浏览器。
Selenium RC是一个独立的中间服务器(确切地说是代理服务器), 主要包括三个部分:launcher,http proxy,selenium core。
Launcher启动浏览器
Selenium Core是在Selenium Server启动浏览器时,嵌入到浏览器中的
selenium core是被selenium server嵌入到浏览器页面中的
并把浏览器的代理设置为Selenium Server的Http Proxy。
测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作
Http Proxy把接收的Web页面返回给浏览器。
因为浏览器存在同源策略,所以Selenium RC中的Selenium Server需要以这种代理模式运行。
RC是一个老的版本,1.0的版本,有一个client端,server端,cliect端提供了一些API,一些方法供我们写脚本的调用一些方法,比如对浏览器进行操作,如执行的点击、输入文本框,server提供了一个代理,(写完脚本运行时)client发送http请求给这个server,server(加载cserver new all到浏览器上,调用js)会转发这个请求去操作浏览器,以后也不会再用
4、selenium grid
可以并行的在多个测试环境之下测试脚本,实现脚本的并发测试执行。 缩短大量测试脚本集合的执行时间
Grid作为自动化分布式执行的工具,通过注册可以知道有几个server,根据客户端发送的请求的不同,分发到指定的浏览器或操作系统
同时并行运行多个Selenium Remote Control。比较好的一点事,它使所有这些Selenium Remote Control显示为一个,这样您在测试中就可以不必操作具体的
http://www.51testing.com/html/85/258885-848818.html
http://blog.sina.com.cn/s/blog_55ba8b4601011x3w.html
由于其是由javascript实现的,所以只要是支持javascript的浏览器都可以很好的支持它。但是和其他工具一样,selenium也不是完美的,正所谓成也萧何败也萧何,正是由于它的这一特点,导致了他的缺点。每一个浏览器对于执行javascript都有很严格的安全限制,以防止用户被恶意脚本攻击。这也导致了selenium在某些场景下的测试工作变得很困难,比如IE下面的upload操作就不允许执行往输入框中填写文件的路径。
WebDriver 是Selenium 1 的升级版本, 也可以理解为两个不同的产品,相比Selenium 1 来说可以更好地绕过JS的限制,API也更易于使用.
Selenium 1 比WebDriver 支持更多的浏览器
WebDriver 可以实现向下兼容Selenium 1 的脚本
Webdriver项目是由Simon Stewart创建的,它是一个非常便捷的自动化测试工具。Webdriver对不同浏览器的处理方式和selenium有着明显的不同,selenium是不管什么浏览器都是javascript来处理,而webdriver是选择浏览器最容易接受的语言来处理。比如,在IE中,C++最合适,在firefox中,javascript最合适等等。通过灵活选择最合适的语言来处理多浏览器,我们可以很好的回避某些浏览器对javascript的安全限制。而且webdriver不仅仅具有这些能力,它还能够调用操作系统API,尤其是当用户需要模拟鼠标和键盘进行真是的页面操作的时候,这项能力的作用尤为明显。
把上面两款工具放到一起比较,优缺点就比较明显了。Selenium要求真实的浏览器环境,而webdriver可以直接操作HTML unit驱动,大家都知道selenium启动firefox非常慢,而webdriver可以通过HTML unit在系统内存中迅速的执行,但是这两者都不方便调试。Webdriver不支持并行测试,而selenium GRID可以搞定这个。Webdriver要求针对浏览器选择最合适的语言来编写脚本,而众所周知,程序员总是希望使用自己擅长的语言来编写脚本,公司也不可能派多个脚本人员在一个项目中仅仅是为了多浏览器支持。因此,我们需要一款工具,它能够把两者的优点集合起来,这就是我们下面介绍的selenium 2.0,即selenium 1.0+webdriver。
要控制浏览器,需要依赖采用本机支持的独立客户端。WebDriver 仅提供 Java 绑定,并不能支持 Selenium 1 所能支持的那么多浏览器。
selenium 2.0最显著的特点就是不用再启动server端了
5、selenium 2.0
webdriver
selenium 1.0+webdriver=selenium 2.0
selenium grid 2.0
以后用到webdriver(java开发的)。 grid2.0也是分布式执行,但我们一般不用这个东西 用jenkins,图形界面,简单 junit提供了大量断言,生成清楚的数据结果
Maven管理jar包 帮助构建批量执行测试用例、构建