资源描述
Selenium自动化测试平台安装使用说明
一 Selenium概述
Selenium是ThroughtWorks公司的开源Web功能测试工具系列,主要包括以下4款:
l Selenium Core: Selenium IDE和Selenium RC的引擎。
l Selenium IDE:FireFox的一个插件,支持脚本录制。
l Selenium RC:Selenium Remote Control。
l Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务,加快Web应用的功能测试。
二selenium平台组件选择
1 Selenium组件对比
Selenium IDE
Selenium Remote Control
Selenium Core
Selenium Core HTA
浏览器支持
仅Firefox
很多
所有
仅IE
需要远程安装
否
否
是
否
支持 HTTPS/SSL
是
是*
是
是
支持跨域
是
是*
否
是
需要Java
否
是
否
否
将测试结果保存到磁盘
是
是
否
是
多语言支持
仅Selenese
很多
仅Selenese
仅Selenese
1.1浏览器支持:
(1)Selenium IDE仅可以在Firefox中工作。
(2)Selenium Remote Control支持很多浏览器,包括最常用的Firefox,IE,Safari等浏览器。
(3)Selenium Core支持的浏览器是最广的,这点和它的实现有关。作为IDE和RC的引擎,Selenium Core几乎可以在任何浏览器中工作。
1.2远程安装:是否需要在被测网站的服务端安装
只有Selenium Core需要,这是出于同源策略的原因。如果你要测试不是自己可以安装发布的web应用,就无法再别人服务器上装一个Selenium Core。
1.3支持HTTPS/SSL
1.4需要Java:
Selenium RC需要,其server“代理服务器”是一个Java程序,需JRE支持。
1.5 将测试结果保存到磁盘
1.6多语言支持
(1)Selenium IDE仅支持Selenium语言。
(2)Selenium RC支持很多语言,如:C#,Java,Python,Ruby等。
(3)Selenium Core仅支持Selenium语言。
PS:Selenium语言有点是比较简单,用(Command,Target,Value)三种元素组成一个行为,并且有辅助录制脚本工具(如:Firefox IDE),不懂程序的测试人员都可以轻松地编写测试案例。
缺点是:Selenium语言有一些严格的限制:它没有条件(没有"if"表达式),并且它没有循环(没有"For"表达式)。这会使编写复杂的测试变得困难甚至不可能。
2 Selenium组件选择
2.1 Selenium IDE
Selenium IDE只支持Firefox浏览器,而依附于Firefox也不便于日后开展自动化测试,但是它的录制快捷好用,并且有代码转换功能,可以把Selenium语言测试案例转为C#,Java等语言的测试案例,可使用Selenium IDE进行测试案例的编写,然后转为其他语言的测试案例后,再调用Selenium RC运行测试案例。
PS:每个版本的IDE都有支持的Firefox版本,IDE 1.9.0支持Firefox 14,IDE 1.8.1支持Firefox 13 IDE ,1.8.0支持Firefox 12。
2.2 Selenium RC
Selenium RC是支持很多浏览器,可以使用C#,Java等语言编写测试案例,易于维护,有很好的扩展性。
三 Selenium平台安装所需软件
Eclipse Sdk: http://www.eclipse.org/downloads/
Junit 4: (junit4.10.zip,使用新版的eclipse会自带该组件,可以不用下载)
Selenium RC:(Selenium Server)http://seleniumhq.org/download/(最新版本2.25,本文使用该版本)
或
Selenium Client Drivers:(Java对应的download)
http://seleniumhq.org/download/(最新版本2.25,本文使用该版本)
Firefox:
*修改为使用Firefox 12版的
Selenium IDE: http://seleniumhq.org/download/
*修改为http://release.seleniumhq.org/selenium-ide/1.8.1/
Firebug :https://addons.mozilla.org/firefox/addon/1843
四 Selenium平台安装步骤
1 安装Firefox
2 安装Selenium IDE
Selenium IDE 是Firefox浏览器的一个插件,依附于Firefox浏览器,打开它的录制功能会忠实的记录你对Firefox的操作,并可以回放它所记录的你的操作。安装有以下三种方法:
方法一:是用Firefox 浏览器进入该插件官方网址http://seleniumhq.org/download/找到selenium IDE的下载链接,目前最新版是1.9.0,Firefox会提示安装插件,点击安装即可。
方法二:是在上述网址下载selenium-ide-1.8.1.xpi,拖到Firefox工作区或者点击 右键使用Firefox打开,即可自行安装。
方法三:在Firefox的菜单栏中选择tools (工具)--->add-ons Manager(添加组件) 然后搜索selenium IED 点击下载安装。
因为国外网站网速的原因,选择方法二比较方便快速,安装后选择重启即可使用。
Firebug同理安装。
3 安装java运行环境
安装jdk并配置环境变量
4 安装eclipse
新建一个java项目test,否则以下步骤需在使用时配置
5 安装junit4
5.1使用自带junit
如果使用新版eclipse,只需选中自带的junit即可,步骤如下图所示
图1
图2
图3
图4
5.2 使用外部junit
如果使用老版eclipse,需要添加jar包Junit-4.10.jar;解压junit 4.10 压缩包后如下图所示
图5
图6
图7
图8
6安装Selenium RC
需要以下jar包:
//Selenium-java-client-driver.jar:在Selenium RC的selenium-remote-control-1.0.3文件夹下
....\selenium-remote-control-1.0.3\selenium-java-client-driver-1.0.1\
//Selenium-server.jar :在Selenium RC的selenium-remote-control-1.0.3文件夹下
.....\selenium-remote-control-1.0.3\selenium-server-1.0.3\
*改为使用
Selenium-server.jar: http://seleniumhq.org/download/ selenium-server-standalone-2.25.0.jar
Selenium-java-client-driver.jar:http://seleniumhq.org/download/ selenium-java-2.25.0.zip解压后找到selenium-java-2.25.0.jar文件的路径,导入eclipse库中
安装如下图所示
图9
图10
图11
分别安装上图所示jar包
图12
图13
图14
五 Selenium平台使用方法
1录制脚本
1.1打开Firefox浏览器,开启selenium IDE插件
菜单中点击工具—>selenium IDE,然后弹出如下窗口开始录制脚本
图15
PS:注意上图中右上角红色录制按钮是自动打开的
1.2页面操作录制
在Firefox地址栏中输入网址,例如
在百度搜索栏中输入selenium—>点击搜索按钮—>在结果页面再搜索qtp—>点击搜索按钮
如下图显示录制结果
图16
1.3重放脚本和停止录制
可以点击左上角可以重放该脚本看是否有录制问题
可以点击右上角可以停止脚本录制
1.4 转换代码
图17
转换后保存为java文件
2 脚本编辑
创建一个java项目,
图18
按照默认的配置创建一个项目,在Src文件夹下新建com.xxx包,把我们录制的脚本导出并放置到该包中
3启动服务
开始菜单—>运行—>cmd
//控制台中进入C:\selenium-remote-control-1.0.3\selenium-server-1.0.3目录(本例中是这样);输入:java -jar selenium-server.jar 回车,服务启动
控制台中执行java –jar %路径%selenium-server-standalone-2.25.0.jar 服务启动
4 运行脚本
在eclipse中运行test.java程序,将自动调用浏览器开始运行脚本。
六 selenium平台使用存在的问题
在selenium平台使用过程中前后遇到不少问题,需要进一步的学习解决
1 脚本录制问题
如本文最后附录的代码,是本次试验中自动生成的java代码,在eclipse中调试的时候出现成员变量类型未定义错误,最后发现是public class test 类没有继承一个默认继承的类SeleneseTestCase,将代码转换成junit3 /rc 时没有这个问题,这个在哪里设置还没有解决;
*改为已解决
2 软件使用问题
对于junit测试框架和selenium运行机制了解不够深入,对selenium的命令了解不够
3脚本整合问题
脚本录制完成后要进行优化和按照逻辑进行组织测试场景,尚需学习;
4代码编程问题
脚本转化为java代码或其他语言代码后,需要进一步使用java或其他语言编程,尚需学习;
5代码重用问题
对于不同测试目标需要修改原有的测试代码或者重新录制代码,如何掌握好原有代码的重复利用,减小重复工作量,尚需学习;
附录1 参考文章
1 selenium RC 环境配置
2官网资料
http://seleniumhq.org/docs/appendix_installing_java_driver_client.html#configuring-selenium-rc-with-eclipse
3在eclipse中使用Selenium,搭建Selenium的环境 for windows
4 Selenium私房菜系列(点击上一级菜单Selenium可以看见该系列全部文章)
附录2 学习网站
1http://seleniumhq.org/:Selenium官网。
2http://openqa.org/:Selenium官方论坛,有很多参考资料:>,荐!
3Selenium中文:记录大量Selenium中文资料的地方。
4 :一个Selenium中文论坛。
附录3 遇到的问题与解决办法
问题1只能在Selenium IDE的Source框中看见html格式的selense语言
并且在options—format中没有格式转换备选项
原因是Selenium IDE中默认不开启格式转换选项,解决办法如下
在如下位置打钩
点击确定后如下操作,就可以看到java形式的代码了
问题2 java代码中不能自动继承TestCase类
后来又发现一个奇妙的问题,要将脚本代码转换为junit4/ remote control的java代码的时候出现该问题,要是转化为junit3/ remote control的java代码的时候就没有这个问题
经过实验已查明是Selenium IDE最新版1.9的问题,现在换回Selenium IDE 1.8.1,并配用Firefox 12,就没有这个问题了。
Selenium IDE各个版本支持的Firefox版本情况详见
该问题详细叙述为录完脚本后转化为junit4/ remote control的java版本的时候,脚本的类名后面没有自动继承SeleneseTestCase类。SeleneseTestCase类存在于com.thoughtworks.selenium.*包中,继承自TestCase类,该类存在于junit.framework.TestCase包中,在脚本中类如果直接TestCase也是可以的。
问题3 java脚本代码在eclipse中运行时可以打开Firefox但看不见Firefox的操作
Selenium RC版本兼容问题,SeleniumIDE需要较高级的Firefox版本,而Selenium Server常常只能支持较低版本的Firefox,所以有人就在时间中使用高低两个版本的Firefox,一个用来录脚本,一个用来做测试。由于使用的 RC换为官网的http://seleniumhq.org/download/的selenium-server-standalone-2.25.0.jar,在需要执行脚本之前直接执行 java –jar %路径%selenium-server-standalone-2.25.0.jar 就可以看到Firefox中的回放了
问题4 为什么不直接用IDE生成的html格式的selense脚本搞测试
该格式不支持if while等逻辑操作,并且直接用selenium core编辑selense语言比较复杂
附录4 脚本代码
test.java
package com.xxx;
import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.regex.Pattern;
public class test { // 正确的应该是public class test extends SeleneseTestCase
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "
selenium.start();
}
@Test
public void testTest() throws Exception {
selenium.open("/");
selenium.type("id=kw", "selenium");
selenium.click("id=su");
selenium.waitForPageToLoad("30000");
selenium.type("id=kw", "qtp");
selenium.click("id=su");
selenium.waitForPageToLoad("30000");
}
@After
public void tearDown() throws Exception {
selenium.stop();
}
}
展开阅读全文