参考:http://www.51testing.com/zhuanti/selenium.html,http://www.cnblogs.com/fnng/p/3653793.html
简介:
Selenium是一个用于Web应用程序测试的工具,是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。、
- 支持的浏览器:IE、Mozilla Firefox、Mozilla Suite等。
- 主要功能:
- 测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
- 测试系统功能——创建衰退测试,检验软件功能和用户需求。
- 支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
版本
Selenium 现在存在2个版本,一个叫 selenium-core, 一个叫selenium-rc 。
- selenium-core 是使用HTML的方式来编写测试脚本,你也可以使用 Selenium-IDE来录制脚本,但是目前Selenium-IDE只有 FireFox 版本。
- selenium-rc 是 selenium-remote control 缩写,是使用具体的语言来编写测试类。selenium-rc 支持的语言非常多,这里我们着重关注java的方式。这里讲的也主要是 selenium-rc。
组成:
selenium 不是简单的一个工具,而是由几个工具组成,每个工具都有其特点和应用场景。
selenium 1.0
IDE:录制(只能用于FF,然后转化成其他语言,使用RC去调用) Grid:并行程序的执行 RC:程序编写及运行 Selenium Core:基于JsUnit,由JS编写,可运行于任何支持JS的浏览器。 |
-
1. selenium IDE
selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。那么什么情况下用到它呢?快速的创建bug重现脚本,在测试人员的测试过程中,发现了bug之后可以通过IDE将重现的步骤录制下来,以帮助开发人员更容易的重现bug。IDE录制的脚本可以转换成多种语言,从而帮助我们快速的开发脚本,关于这个功能后而用到时再详细介绍。
-
2. selenium Grid
Selenium Grid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-app的功能测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。其特点为:
- 并行执行
- 通过一个主机统一控制用例在不同环境、不同浏览器下运行。
- 灵活添加变动测试机
-
3. selenium RC
selenium RC 是selenium 家族的核心工具,selenium RC 支持多种不同的语言编写自动化测试脚本,通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。
selenium RC 使用分为Client Libraries和selenium Server:
-
- Client Libraries库主要主要用于编写测试脚本,用来控制selenium Server的库。
- Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher、Http Proxy、Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。Launcher用于启动浏览器,把selnium Core加载到浏览器页面当中,并把浏览器的代理设置为Selenium Server 的Http Proxy。
selenium 2.0
搞清了selenium 1.0 的家族关系,selenium 2.0 是把WebDriver 加入到了这个家族中;简单用公式表示为:
selenium 2.0 = selenium 1.0 + WebDriver |
需要强调的是,在selenium 2.0 中主推的是WebDriver ,WebDriver 是selenium RC 的替代品,因为 selenium 为了向下兼容性,所以selenium RC 并没有彻底抛弃,如果你使用selenium开发一个新自动化测试项目,强列推荐使用WebDriver 。那么selenium RC 与webdriver 主要有什么区别呢?
- selenium RC 在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript 翻译器来翻译和执行selenese命令(selenese 是selenium命令集合)。
- WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器。WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。
如果是新项目直接学习webdriver 就OK了,RC是过时技术。
学习路线:
1. 具备的知识和技术:
(1)selenium进行的自动化测试是基于ui层面的,所以html,css,javascript基本上是必不可少的,至于javascript,有很多的前端都使用javascript作为其脚本语言!不过javascript并不需要学得很深,只需要掌握一些基础的知识,然后在实践中碰到的时候再继续深学下去!
(2)掌柜一门编程语言,比如java,C#,python,ruby!很明显,若是有开发语言的基础,则写脚本的时候也不会太费力,这也是一项基本功!目前,使用java还是偏多的!另外也是由于selenium支持多种语言写测试脚本!自动化测试脚本并不能靠录制出来的,基本上是要靠自己写出来的,毕竟录制的脚本的弊端很多,尤其是前端使用了某些框架之后,录制的脚本基本成为鸡肋!
(3)单元测试框架junit/testing,目前很多人采用selenium+junit或者selenium+testng测试架构,所以,需要掌握能配合selenium进行测试的框架,比如junit/testng,仅仅利用其提供的api便可以大大地辅助你的测试,提升测试效率!
环境搭建
一、开发环境:
1、JDK1.6
2、Eclipse:Version: Kepler Service Release 1,下载地址:http://www.eclipse.org/downloads/
3、Selenium:selenium-java-2.39.0.zip,下载地址:http://code.google.com/p/selenium/downloads/list
解压selenium-java包,这个包里面包含四部分,如下图:
二、新建一个Java Project:
1、创建一个java项目:
2、然后把上面解压出来的文件拷到新建的project目录下,目录结构如下图:
3、添加build path,项目目录右键-->Build Path--> config build path-->Java Build Path-->Libraries-->Add JARs,把libs文件夹下的jar包全部添加上,再添加selenium-java-2.48.2-srcs.jar和selenium-java-2.48.2.jar
3、添加完之后目录结构如下图,多了Referenced Libraries,这里就是上面那一步添加进去的jar包:
至此,环境工作准备就绪,下面来写一个简单的小例子。
4、在src下面新建测试类,如下图:
5、添加代码,实现:打开百度,然后在百度搜索框输入helloworld,点击搜索按钮,关闭浏览器。
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class TestClass { public static void main(String[] args) { //如果火狐浏览器没有默认安装在C盘,需要制定其路径 //System.setProperty("webdriver.firefox.bin", "D:/Program Files/Mozilla firefox/firefox.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.baidu.com/"); driver.manage().window().maximize(); WebElement txtbox = driver.findElement(By.name("wd")); txtbox.sendKeys("HelloWorld"); WebElement btn = driver.findElement(By.id("su")); btn.click(); driver.close(); } }
然后直接右键-->Run As-->Java Application就可以看到效果了。