Selenium是集成测试工具,是ThoughtWorks公司(就是马同学的那个公司,牛的很)的开源工具,最近在网上看到介绍的文章,自已也用了一下,它主要包括:Selenium IDE,Selenium Remote Control,Selenium Core,主要的思想我个理解就是在使用中生成测试报告,测试用例,以前对这种集成测试也不是很了解,也不知说的对不对,一般对开发,测试人员来说通过Selenium IDE来生成测试用例中的代码,然后再运junit来进行测试,它的测试用例一般为
package
com.thoughtworks.selenium;
import
junit.framework.TestCase;
import
org.openqa.selenium.server.SeleniumServer;
public
class
GoogleTest
extends
TestCase
{
private
Selenium selenium;
public
void
setUp()
throws
Exception
{
String url
=
"
http://www.google.com
"
;
selenium
=
new
DefaultSelenium(
"
localhost
"
, SeleniumServer.DEFAULT_PORT,
"
*firefox
"
, url);
selenium.start();
}
protected
void
tearDown()
throws
Exception
{
selenium.stop();
}
public
void
testGoogleTestSearch()
throws
Throwable
{
selenium.open(
"
http://www.google.com
"
);
assertEquals(
"
Google
"
, selenium.getTitle());
selenium.type(
"
q
"
,
"
Selenium OpenQA
"
);
assertEquals(
"
Selenium OpenQA
"
, selenium.getValue(
"
q
"
));
selenium.click(
"
btnG
"
);
selenium.waitForPageToLoad(
"
5000
"
);
assertTrue(selenium.isTextPresent(
"
openqa.org
"
));
assertEquals(
"
Selenium OpenQA - Google 搜索
"
, selenium.getTitle());
}
}
可以从setUp()中看到,它需要用到一个叫SeleniumServer的服务器,这个服务器的作用主要是代理的作用,因为same origin policy(就是一个脚本只能在它自已的源站点上运行,我这样理解的,不了的可以查看官方文档)的关系,所以需要加一层去取得网页并能在上面运行测试脚本的服务器,也就是我们的SeleniumServer了,所以才叫Selenium Remote Control,我们的测试用例主要是去连它,而不是真正直接去连接google进行的测试。以后不用想怎么写测试用例了,Selenium Core主要是写html来进行测试,不过同样也可以用Selenium IDE来自动生成html,然后将生成的一个html放到一起,开启TestRunner.html进行自动测试,速度分三步,run,walk,step,run模式下看上去还是很过瘾的,原来javascript可以写出这么牛的软件,呵呵,java6也支持javascript脚本了,看来这门语言还是值得好好研究一下,不能总是停留在看得懂的水平。
注意:上面说的服务器在 \selenium-remote-control-0.8.1\server下面
启动命令为 java -jar selenium-server.jar
参数 -interactive 为使用交互模式,就是可以直接在命令行进行测试
-multiWindow 为多窗体,我试了下,不过好像不行