Luca Vix Visconti, CEO, Open Gate S.r.l.
Last Update: November 25, 2008
原文地址:
http://www.zkoss.org/smalltalks/zkunittesting/
版本
适用与任何版本.ZK 3.0.x 和 3.5.x经过测试。
背景
应用中运行自动化测试是开发出一个高质量的企业应用的保证。在这篇文章中,我们将介绍一种使用Selenium和JUnit测试ZK程序的简单方法。我们以测试ZK Demo为例。
准备
我们假设你已经安装了Eclipse 3.X和Firefox
介绍
Selenium是一个测试套件。它由一个单元测试运行部分Selenium Remote Control,一些客户端的语言库,firefox的宏插件以及一个可视化的eclipse插件组成。 Selenium Remote Control是一个服务器端,它会等待客户端发送过来的命令,并根据命令控制浏览器来运行相应的web程序。这里我们将解释如何启动Selenium Remote Control以及使用java编写一个简单的客户端来测试ZK demo的一些特性。Firefox的Selenium IDE对一步步的测试你的宏很有帮助。
获得软件
要下载selenium请访问
Selenium Remote Control 下载页面,并下载最新版本。在SELENIUM_HOME目录下解压缩文件。
要为你的Firefox安装Selenium IDE,请访问
addon网站,按一般流程来下载安装addons.
我们还需要JUnit,你在从
Sourcefoge Junit page下载。
启动Selenium Remote Control
到SELENIUM_HOME/selenium-server-1.0-beta-1/ 目录下,并运行
java -jar selenium-server.jar
配置Firefox
Selenium Remote Control以代理的方式运行,所以,如果要使所有的测试能运行,你必须要设置浏览器的代理。创建一个如下所示的proxy.pac文件。到 Preferences > Advanced > Network > Settings 并设置自动代理配置的url为 file:///path/to/your/proxy.pac
对于windows下使用IE的用户,你必须要去掉一个斜杠,像这样
file://path/to/your/proxy.pac
proxy.pac
function FindProxyForURL(url, host) {
if ( shExpMatch(url,"*selenium-server*") ) {
return "PROXY localhost:4444; DIRECT"; //The Selenium Remote Control
} else {
if ( shExpMatch(host,"localhost") ) {
return "DIRECT";
} else {
return "PROXY your.proxy.com:proxyport; DIRECT"; // or DIRECT like localhost if you have no proxy
}
}
}
保证访问下面的例子网址时都能流畅的运行,http://google.com和 http://google.com/selenium-server.如果一切OK,你会看到下面的错误信息。
HTTP ERROR: 404
/selenium-server/ Not Found
RequestURI=/selenium-server/
Powered by Jetty://
你需要到about:config下(地址栏内输入 about:config),将browser.sessionstore.resume_from_crash 属性设置为false.
创建测试程序
打开eclipse创建一个java工程。创建一个lib文件夹并导入需要的库:
* SELENIUM_HOME/selenium-java-client-driver-1.0-beta-1下的selenium-java-client-driver.jar
* 从sourceforge下载的junit-3.8.1.jar
接着选择这个库,右击并选择Build Path > Add to Build Path
在src下,默认包内创建一个新类ZKDemoTest粘帖下面的代码:
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
public class ZkDemoTest extends SeleneseTestCase {
@Override
public void setUp() throws Exception {
setUp("http://www.zkoss.org/", "*custom /usr/bin/firefox");
}
@Override
public void tearDown() throws Exception {
super.tearDown();
selenium.stop();
}
public void testNew() throws Exception {
selenium.open("/zkdemo/userguide/");
selenium.click("//div[text()='Paging']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if (selenium.isElementPresent("//h4[text()='Listboxes with paging control']")) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//button[@class='z-paging-next']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if ("2".equals(selenium.getValue("//input[@class='z-paging-inp']"))) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//button[@class='z-paging-next']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if ("3".equals(selenium.getValue("//input[@class='z-paging-inp']"))) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//button[@class='z-paging-next']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if ("4".equals(selenium.getValue("//input[@class='z-paging-inp']"))) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//div[text()='The onChanging event']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if (selenium.isElementPresent("//h4[text()='The onChanging event']")) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.type("//span[text()='onChanging textbox: ']//../../..//input", "testme");
Thread.sleep(1000);
assertEquals("testme", selenium.getValue("//span[text()='instant copy: ']//../../..//input"));
}
}
setUp方法定义了站点的url和浏览器。IE用户使用IE的路径替换第二个参数即可。
要运行测试,右击ZkDemoTest.java并选择Run As > JUnite Test
编写你自己的测试代码
为了简化你自己的测试代码你可以使用Selenium IDE.
在安装了前面所说的插件后,你可以使用Firefox到你想测试的站点
并打开IDE。( Tools > Selenium IDE ).
在base URL一栏输入web应用的地址并点击录制按钮(在顶部右端的红色按钮)
在你录制了一些命令后,你可能需要编辑它们。Selenium和其他测试套件一样,使用组件的ID辨认组件。如果你使用元数据绑定,记得在使用了类型命令后执行onBlur事件。如果你想修改你的zk组件去包含一个z.id属性,修改html元素为如下形式//element[@z.id='myZkId']
你编辑完之后可以到Options > Format > Java - Selenium RC并将结果粘帖到你的java类里面。
- 大小: 96 KB
- 大小: 26.7 KB
分享到:
相关推荐
1、资源内容地址:https://blog.csdn.net/abc6838/article/details/143720369 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理
CPPC++_更好的Windows字体渲染
10018
cppc++
二环北路东段欣心家园小区商业B段(中石油加油站东邻).m4a
cppc++
C2005
Python课程设计之高校教务系统
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
10023
使用QUndoStack撤销栈实现QTreeWidget删除item及撤销、重做
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
Python课程设计之飞机大战3.zip
SpringBoot分布式事务
CPPC++_tensorort for yolo系列YOLOv10YOLOv9YOLOv8YOLOv7YOLOv6Y
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
收录了「IT无知君」CSDN博客中涉及的Java项目源码,还有许多的开发工具类,都是我自己在用在不断维护的,需要请进!
CPPC++_更新你的CFW作弊码固件,更直接地从你的任天堂交换机
test-dadfateq