Selenium 1.0

Selenium 1.0是第一个基于浏览器的开源自动化测试工具。它可以使用所有支持http库的编程语言,也可以运行在所有支持javascript的浏览器上。当然它 也有它的缺点。在运行selenium 1.0程序之前,我们得先启动selenium服务器端,也就是selenium RC。而selenium RC是由javascript实现的,每一个浏览器对于执行JavaScript都有很严格的安全限制,以防止用户被恶意脚本攻击,这导致在某些情况下用 selenium 1.0很麻烦。

selenium 1.0有以下3个问题亟待解决:

  1. 没有原生的鼠标和键盘事件
  2. XSS/HTTP同源数据问题
  3. popup dialog问题

WebDriver

WebDriver项目是由Simon Stewart(来自Google)创建的,是一个非常便捷的自动化测试工具。它采用HtmlUnit,可以直接在内存中运行。而且WebDriver 还可以调用操作系统的API,尤其当用户需要模拟鼠标和键盘进行真实的页面操作的时候,这项能力作用尤为明显。Webdriver也有它的缺点,使用它控 制浏览器的时候,需要依赖采用本机支持的独立客户端。WebDriver仅提供Java绑定,并不能支持Selenium 1 所能支持的那么多浏览器。

Selenium 1.0 vs WebDriver

  1. WebDriver 可以绕过JavaScript 黑盒。
  2. Selenium 1.0要求真实的浏览器环境,而WebDriver可以直接操作HtmlUnit驱动。针对某些浏览器比如说Firefox运行比较慢的情况,我们可以采用HtmlUnit驱动在系统内存中迅速的执行。
  3. WebDriver不支持并行测试,而Selenium Grid可以。
  4. WebDriver支持的浏览器有限,而selenium 1.0几乎支持浏览器,而且针对每一种浏览器都支持很多种语言。
  5. 一些selenium 1.0没有解决的问题,比如说“原生的鼠标和键盘事件”,WebDriver可以通过调用系统的API来实现。

Selenium 1.0 +WebDriver =Selenium 2.0

于是,为了综合了selenium 1和WebDriver的优点, Selenium 2(也被称为 Selenium WebDriver)面世。Selenium 2具有来自WebDriver的清晰面向对象API,并能以最佳的方式与浏览器进行交互。Selenium 2不使用JavaScript沙盒,支持多种浏览器和多语言绑定。具体的有:

  • Mozilla Firefox
  • Google Chrome
  • Microsoft Internet Explorer
  • Opera
  • Apple iPhone
  • Android browsers

Selenium 2支持的语言有Java、C#、Ruby和Python。Selenium 2 还提供基于HtmlUnit的无外设驱动,是用于测试Web应用程序的Java框架。HtmlUnit运行速度特别快,但它不是一个真正与真实浏览器相关联的驱动。

Selenium 工具

目前说的selenium,一般包括以下四个工具:

Selenium Core:Selenium 核心内容,是IDE和RC的引擎。内部由JavaScript函数构成,通过调用这些函数来实现对浏览器的各种操作。

Selenium IDE:一款Firefox 插件。具有录制、编辑以及回放脚本的功能,易于上手,对于初学者可以开发一些简单的测试脚本。

Selenium WebDriver(Selenium 2.0):由Selenium 和WebDriver合并而成。它支持WebDriver API和底层技术以及在WebDriver API下的Selenium 1.0的技术。Selenium 2.0仍然可以运行于Selenium 1.0的Selenium RC接口以支持向后兼容。

Selenium RC(Selenium 1.0):Selenium Remote Control。远程控制,也就是通过脚本操作浏览器。它允许测试人员使用一种程序语言根据需求扩张测试脚本的复杂度、延展度。主要包括三部分:launcher,http proxy,selenium core。

Selenium Grid:允许同时在不同的环境上运行多个测试任务。

Selenium工具比较

  1. 浏览器支持

    • Selenium IDE仅可以在Firefox中工作。
    • Seleneium RC支持很多浏览器,包括最常用的:Firefox,IE,Safari等
    • Selenium Core支持的浏览器最广,这点和它的实现有关。
  2. 需要远程安装
    • 这里只有Selenium Core需要,处于同源策略的原因。这也是Selenium Core的一大限制。
    • Selenium IDE和Selenium Core HTA不会被同源策略限制,因为他们对浏览器扩展了。
    • Selenium RC提供一个代理服务器来保证Selenium JS文件看似来自相同的远程服务器,从而符合同源策略;代理服务器欺骗浏览器。
  3. 支持HTTPS/SSL
    • 都支持
  4. 需要JAVA
    • 只有Selenium RC需要。由于代理服务器是一个JAVA程序,所以需要在跑测试用例前启动。
  5. 将测试结果保存到磁盘
    • 只有Selenium Core不能将任何测试结果写到磁盘上。因为他是用JS写的,不允许向磁盘写数据。解决方案是将测试结果发送到另外一台服务器保存。
  6. 多语言支持
    • Selenium IDE仅支持Selenium语言。
    • Selenium RC支持很多语言。如:C#,Java,Python,Ruby等。
    • Selenium Core也是仅支持Selenium 语言。

备注:

Selenium语言,使用(Command,Target,Value)三种元素组成一个行为,可以使用Selenium IDE辅助录制脚本,不懂测试的人员都可以轻松编写测试案例。

缺点是:Selenium 语言没有条件(if),没有循环(for),使得编写复杂的测试变得困难甚至不可能。

Selenium各种工具比较的更多相关文章

  1. selenium IDE工具页面介绍!

    selenium IDE工具页面,常用功能点介绍

  2. selenium自动化测试工具模拟登陆爬取当当网top500畅销书单

    selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制 ...

  3. Selenium IDE 工具总结

    基本介绍: Selenium工具专门为WEB应用程序编写的一个验收测试工具. Selenium的核心:browser bot,是用JavaScript编写的. Selenium工具有4种:Seleni ...

  4. 初识Selenium以及Selenium常用工具的简单介绍

    一.为什么要学习自动化测试? 在互联网行业中敏捷开发小步快跑,快速迭代,测试环节中回归测试任务大繁琐,手工测试容易漏测,自动化测试可以提高测试效率保证产品质量. 二.学习的层次模型 1.单元自动化测试 ...

  5. 使用Python学习selenium测试工具-4:查找元素

    转自:https://blog.csdn.net/wd168/article/details/51819930 web通常包含了Hyper Text Markup Language (HTML).Ca ...

  6. selenium 自动化工具

    问题 今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium support for PhantomJS has been dep ...

  7. python selenium爬虫工具

    今天seo的同事需要一个简单的爬虫工具, 根据一个url地址,抓取改页面的a连接,然后进入a连接里面的页面再次抓取a连接 1.需要一个全局的set([])集合来保存抓取的url地址 2.由于现在单页面 ...

  8. 了解selenium这个工具

    selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景.   selenium IDE selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏 ...

  9. Selenium自动化工具工作原理

    http://blog.csdn.net/five3/article/details/6790925 原文作者信息如下,需要更多信息请去原作者博客查看: 作者:hyddd 出处:http://www. ...

随机推荐

  1. JNI与多线程

    在android开发过程中,由于主线程要聚焦于UI交互,为了软件运行流畅必然要用到很多多线程技术.而在JNI机制中专门提供了一些避免线程冲突的函数.了解.学习并掌握如何避免线程冲突问题是一个程序猿的必 ...

  2. Mediator 中介者 协调者模式

    简介 定义:用一个[中介者对象]封装一系列的[对象交互],中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 中介者模式的结构 抽象中介者Mediator:定义好[ ...

  3. 176. [USACO Feb07] 奶牛聚会

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...

  4. AmazeUI 模态框封装

    /** * 模态窗口 */ window.Modal = { tpls:{ alert:'<div class="am-modal am-modal-alert" tabin ...

  5. 关于uploadify 没有显示进度条!!!!

    如果你也弄了很久不知道为什么不出现上传进度条!,那就一定要看这里了! 我注释了 queueID 属性后 就出现了!!!!! 就是这么简答! //添加界面的附件管理 $('#file_upload'). ...

  6. 网站项目:让一般处理文件.ashx的代码有折叠功能(#region)

    注意:该方法用于网站项目.但对于其他类型的项目有一定的参考作用. 1.首先在你想被别人访问的位置新建一个ashx文件,如/System/xxx.ashx. 新建xxx.ashx的代码如下: [csha ...

  7. c# 学习笔记(二)

    c#3.0 新特性  扩展方法 扩展方法允许编写和声明它的类之外的关联类的方法 用于没有源代码或者类是密封的,需要给类扩展新方法时 1.扩展方法必须被声明为static2.扩展方法声明所在的类必须被声 ...

  8. iOS真机测试种可能遇到的问题

    1. Reason- image not found 用模拟器是没有问题的,不过在真机好像是有问题,不确定是否是所有机型. 崩溃日志   1 2 3 4 5   dyld: Library not l ...

  9. centos 给鼠标右击添加 “打开终端” 菜单项

    1.以root身份在终端执行如下命令 yum -y install nautilus-open-terminal   2.重启操作系统 shutdown -r now

  10. linux makefle学习

    学习材料取之这个网址:http://blog.chinaunix.net/uid-27717694-id-3696246.html 学习环境:ubuntu10.04-64bit-desktop版,gc ...