selenium初步使用
转自:http://blog.csdn.net/JavaMan_chen/archive/2008/03/14/2183757.aspx
前两天在一本《程序员》杂志上接触了selenium这个框架,说是可以和Junit整合进行web界面测试,将各模块的功能自动的展现个客户,这无疑吸引了我。花了两天的时间研究了一下。
selenium 大致可分为两个版本Selenium Core和SeleniumRC,第一种是以网页的形式编写TestCase,而后一种用Junit,并且支持多种语言,个人表较喜欢后一种,可以和 ANT整合用于自动化测试。本人也是初步使用,学的过程中主要结合API和编写好的用例说明,具体的情况可在问官方网站进行了解 http://www.openqa.org/selenium/
seleniumRC下载地址:http://selenium-rc.openqa.org/download.jsp运行测试前在DOS命令下启动selenium-server.jar(无需放到环境目录下):java -jar selenium-server.jar
具体测试用例如下:主要用于form表单的提交测试
前两天在一本《程序员》杂志上接触了selenium这个框架,说是可以和Junit整合进行web界面测试,将各模块的功能自动的展现个客户,这无疑吸引了我。花了两天的时间研究了一下。
selenium 大致可分为两个版本Selenium Core和SeleniumRC,第一种是以网页的形式编写TestCase,而后一种用Junit,并且支持多种语言,个人表较喜欢后一种,可以和 ANT整合用于自动化测试。本人也是初步使用,学的过程中主要结合API和编写好的用例说明,具体的情况可在问官方网站进行了解 http://www.openqa.org/selenium/
seleniumRC下载地址:http://selenium-rc.openqa.org/download.jsp运行测试前在DOS命令下启动selenium-server.jar(无需放到环境目录下):java -jar selenium-server.jar
具体测试用例如下:主要用于form表单的提交测试
package org.selenium.test;
import com.thoughtworks.selenium.SeleneseTestCase;
public class TestSelenium extends SeleneseTestCase {
public void testSelenium() throws Throwable {
try {
// 每个测试步骤间隔1秒
selenium.setSpeed("1000");
// 打开测试的网页
selenium.open("http://localhost:8080/TestProject/form/selenium.jsp");
// 获取标题
assertEquals("selenium", selenium.getTitle());
assertTrue(selenium.isElementPresent("xpath=//input[@name='username']"));
// 向input中type为text的栏位键入信息
selenium.type("xpath=//input[@name='username']", "chenxu");
selenium.type("xpath=//input[@name='password']", "password");
// 选择下拉列表
selenium.select("xpath=//select[@name='select']", "index=1");
assertEquals("1", selenium.getSelectedIndex("xpath=//select[@name='select']"));
assertEquals("chenxu", selenium.getSelectedValue("xpath=//select[@name='select']"));
// 勾选或去选check/radio
selenium.check("xpath=//input[@id='check2']");
//获取name为check栏位的id属性
selenium.getAttribute("check@id");
assertTrue(selenium.isChecked("xpath=//input[@id='check2']"));
selenium.uncheck("xpath=//input[@id='check2']");
assertFalse(selenium.isChecked("xpath=//input[@id='check2']"));
assertEquals("chenxu", selenium.getValue("xpath=//select[@name='select']"));
// 点击提交按钮
selenium.click("xpath=//input[@type='submit']");
// 等待页面载入
selenium.waitForPageToLoad("3000");
// 获取新页面标题
assertEquals("success", selenium.getTitle());
//确保测试中没有错误出现
checkForVerificationErrors();
} finally {
//清空错误信息列表
clearVerificationErrors();
}
}
}
import com.thoughtworks.selenium.SeleneseTestCase;
public class TestSelenium extends SeleneseTestCase {
public void testSelenium() throws Throwable {
try {
// 每个测试步骤间隔1秒
selenium.setSpeed("1000");
// 打开测试的网页
selenium.open("http://localhost:8080/TestProject/form/selenium.jsp");
// 获取标题
assertEquals("selenium", selenium.getTitle());
assertTrue(selenium.isElementPresent("xpath=//input[@name='username']"));
// 向input中type为text的栏位键入信息
selenium.type("xpath=//input[@name='username']", "chenxu");
selenium.type("xpath=//input[@name='password']", "password");
// 选择下拉列表
selenium.select("xpath=//select[@name='select']", "index=1");
assertEquals("1", selenium.getSelectedIndex("xpath=//select[@name='select']"));
assertEquals("chenxu", selenium.getSelectedValue("xpath=//select[@name='select']"));
// 勾选或去选check/radio
selenium.check("xpath=//input[@id='check2']");
//获取name为check栏位的id属性
selenium.getAttribute("check@id");
assertTrue(selenium.isChecked("xpath=//input[@id='check2']"));
selenium.uncheck("xpath=//input[@id='check2']");
assertFalse(selenium.isChecked("xpath=//input[@id='check2']"));
assertEquals("chenxu", selenium.getValue("xpath=//select[@name='select']"));
// 点击提交按钮
selenium.click("xpath=//input[@type='submit']");
// 等待页面载入
selenium.waitForPageToLoad("3000");
// 获取新页面标题
assertEquals("success", selenium.getTitle());
//确保测试中没有错误出现
checkForVerificationErrors();
} finally {
//清空错误信息列表
clearVerificationErrors();
}
}
}
注:1,这里的ElementLocator使用xpath方式,表达式看上去复杂,其实并不难理解,如"xpath=//input[@id= 'check']"xpath=//是固定模式,input指form表单的input栏位,id自然就是input中的id属性了。selenium可 以使用多种元素定位方法(ElementLocator)具体方法可查阅API.
2,这里的测试类继承了SeleneseTestCase,该类继承至Junit的TestCase,其setup()和teardown()方法用于初始化和终止selenium服务,同时覆盖了一些断言(assert)方法。