Selenium一个强大的基于浏览器的开源自动化测试工具

追踪溯源,WebDriver 和 Selenium 本是两个独立的项目,实现机制也是不同的。那 Selenium 团队为什么会在 Selenium 2 中将两者合并,这究竟有什么用意呢?WebDriver 比 Selenium 又有什么优势呢?我们该如何选择使用 Selenium 还是 WebDriver 呢?别着急,您将在本文中找到答案,并将了解一些 WebDriver 的基本知识和使用方法。
为方便表述,在本文中,我们称 Selenium 2 为 WebDirver,Selenium 为 Selenium 1.x(因为 Selenium1.x 时通常指的是 Selenium RC,所以 Selenium 也指 Selenium RC)。

WebDriver 是… …?

Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver​(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。
那 Selenium 团队为什么会将两个项目合并呢?我们通常认为其中部分原因是 WebDriver 解决了 Selenium 存在的缺点(比如,能够绕过 JS 沙箱),部分原因是 Selenium 解决了 WebDriver 存在的问题(比如,支持更广泛的浏览器和编程语言),不论真正的原因是什么两个项目的合并为用户提供了一个优秀的">自动化测试框架。
现在让我们看看两个工具有什么具体的不同。在开始之前,我们首先看一下用 Selenium 和用 Webdriver 构建出来的测试工程是什么样的,后文会在这个基础上阐述 Webdriver 和 Selenium 的异同。

说明:因为现在 WebDriver 还在改进和优化过程中,所以我们以下的举例和说明都是基于版本 selenium-2.28.0 的基础上。

构建一个 Selenium 测试工程

Selenium API 则支持更多的编程语言,这里我们还是以 Java 为例。

图 1. Selenium 测试工程

清单 1. 使用 Selenium API 的脚本 - 登录 SmartCloud iNotes

package demo;import com.thoughtworks.selenium.DefaultSelenium;import com.thoughtworks.selenium.Selenium;public class SeleniumDemo {public static void main(String[] args) throws InterruptedException { // 创建一个 Selenium 实例Selenium selenium = new DefaultSelenium("localhost", 4444, \ "*firefox", "https://apps.na.collabserv.com/"); // 启动 selenium session selenium.start(); // 打开测试网页 selenium.open("https://apps.lotuslive.com/"); // 输入用户名,密码 selenium.type("//input[@id='
username']", \ "autouser01@e3yunmail.mail.lotuslive.com");selenium.type("//input[@id='password']", "test"); // 登录 selenium.click("//input[@id='submit_form']"); // 等待直到页面出现 Mail 链接int count = 60;while(count > 0){if(selenium.isElementPresent("//a[contains(text(),'Mail')]")){break;}else{Thread.
sleep(1000); count--; } } // 登出 selenium.click("//a[contains(text(),'Log Out')]"); // 测试结束后,终止 selenium session selenium.stop(); }}

时间: 2024-10-26 09:53:19

Selenium一个强大的基于浏览器的开源自动化测试工具的相关文章

JasperReports 4.1.1发布 基于Java的开源报表工具

JasperReports 4.1.1这个版本引入了一个新的http://www.aliyun.com/zixun/aggregation/34049.html">Web框架在报告中以支持新的版本库和数据访问API,增强排序和过滤列表组件和一个新的用来呈现地理地图的组件,增强了交互性.旧的过时的代码已被删除,同时使用新的Java语言特性,如泛型. JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表. JasperReport

JasperReports v4.0.0发布 基于Java的开源报表工具

JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表. JasperReports 支持PDF.HTML.XLS.CSV和XML文件输出格式.JasperReports是当前Java开发者最常用的报表工具. 该版本引入了一个全新的 CSV 查询执行器,基于新的元数据的 CSV 导出工具,在其他方面也有一些改进和补丁修复:文档方面增加了一些新的章节. JasperReports的报告模板可以以iReport之类的工具来制作,只要把报告

基于业务的Web自动化测试工具—Sahi

谈及开源Web 自动化测试工具,相信很多人立刻会想到Selenium.本文给大家介绍的是另一款开源Web 自动化测试工具Sahi.Sahi的网站上有关于与Selenium的对比,不过这不是我们今天探讨的主题.这篇文章的主要目的是向读者简单的介绍一下Sahi并分享一下个人使用Sahi测试Dojo应用的经验,希望对大家能有所帮助. 1. Web2.0应用测试的困境 在开始介绍Sahi之前,我们一起来看看在开发Web 自动化测试(特指Web 2.0应用)时常面临的两大技术问题. 页面元素的识别 根据个

SlimerJS —— 基于Firefox的网页自动化测试工具

SlimerJS 是一个提供给 Web 开发人员,可通过脚本编程控制的浏览器.它可以让你使用 Javascript 脚本操纵一个网页:打开一个网页,点击链接,修改的内容等,这对于做功能测试,页面自动机,网络监控,屏幕捕获等是非常有用的. 文章转载自 开源中国社区 [http://www.oschina.net]

Kataspace:用HTML5和WebGL创建基于浏览器的虚拟世界

源自斯坦福的创业公司Katalabs发布了一个用于创建基于浏览器的虚拟世界的开源框架. 名叫KataSpace的软件,利用了新兴的HTML5技术,以及WebGL和WebSockets,允许用户无需安装任何插件,直接在浏览器的3D环境中展开互动.Katalabs已经推出了一个演示用的DEMO,它推荐使用Firefox 4 Beta7浏览器.在输入一个用户名,选择一个虚拟化身后,玩家就能进入3D世界,可以看到3D地形和其他用户的化身,用户之间可以用聊天窗口聊天. 原文链接:http://news.c

TinyMCE v3.4.2发布 基于浏览器所见即所得编辑器

TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,由JavaScript写成.它对IE6+和Firefox1.5+都有着非常良好的支持.功能方面虽然不能称得上是最强,但绝对能够满足大部分网站的需求,并且功能配置灵活简单.另一特点是加载速度非常快,如果你的服务器采用的脚本语言是PHP,那还可以进一步优化.最重要的是,TinyMCE是一个根据LGPL license发布的自由软件,你可以把它用于商业应用. TinyMCE v3.4.2发行说明: Added new 'paste_text_s

基于APPIUM的移动自动化测试

Appium一款开源自动化测试工具,可以非常快捷的为iOS和Android移动平台创建功能自动化测试用例.相比其他的移动自动化测试工具,Appium测试由于调用了Selenium的client库使其可以使用任意的语言,包括Python.Ruby.Node.js,Objective,java等. 本文我们主要讨论如何通过junit java example tests测试完成iOS sample apps的测试(此处我们还会创建TestNG example Tests) 当然在开始之前,我们首先需

Endeavour v1.24发布 基于Web的软件项目管理工具

Endeavour 是一个功能丰富基于Web的软件项目管理工具,适合用来管理大规模的迭代和增量企业系统软件项目,主要功能包括:用例管理.迭代开发.项目计划.需求变更管理.缺陷跟踪.测试用例.文档管理和其他功能等. Endeavour Agile ALM drives the creation of large-scale enterprise system solutions by providing support for iterative and incremental agile sof

AgentWeb是基于Android WebView一个功能完善小型浏览器库

本文讲的是AgentWeb是基于Android WebView一个功能完善小型浏览器库,AgentWeb是一个高度封装的 Android WebView ,简单易用 , 带有进度条 . 支持文件上传 . 下载 . 简化 Javascript 通信 . 链式调用 . 加强 Web 安全的库 .让你几行代码集成一个小型浏览器在你的应用 . App 下载体验 前言 WebView 可谓是每个应用必备的一个控件了 ,但是谈起它的使用 ,让很多人都不是那么喜欢它 ,比如说每个 Web 页面都需要各种一大推