51Testing软件测试论坛
标题:
使用Java装饰者模式设计多Tab对话框的基于Selenium的Web自动化测试
[打印本页]
作者:
ii_hw
时间:
2012-12-23 19:48
标题:
使用Java装饰者模式设计多Tab对话框的基于Selenium的Web自动化测试
近日,在用java编写基于selenium的web自动化测试用例时,遇到下述情况。
[attach]82869[/attach]
如上图,是一个由多个tab构成的对话框,每个tab下有对应的属性内容。用户填写相关的内容后点击启动,就可以生成具有一定属性的虚拟机。现在,需要将这个操作提取成为一个公共的类,以供不同的测试场景使用,用来构成不同属性组合的虚拟机的测试用例。
至于需要什么属性的虚拟机,汀决于不同测试场景的不同需求。有的场景可能只需要一个名称属性的虚拟机;有的可能需要两到三个属性的虚拟机;有的可能需铱属性的虚拟机等等。不确定的多种组合,让编写这个公共类有了一定难度。
在考察了多种Java设计模式后,感觉“装饰者模式”较为适合目前这种情况。于是,参考该模式,设计了如下程序架构。
[attach]82870[/attach]
其中类的职责如下:
抽象构件角色(CreateVM):给出一个接口,以规范准备接收附加责任的对象。
具体构件角色(DoprepareWork):这个类用来做启动到这个多tab对话框的操作。
装饰角色(LaunchVM):持有一个构件对象的实例,并定义一个与抽象构件接口一致的接口。
具体装饰角色(TabDetail、TabVisitAndSec、TabVolume等):就是每个具体的tab。
实现代码如下:
/**
* Created with IntelliJ IDEA.
* User: whu
* Date: 12-12-12
* Time: 上午10:24
*/
public interface CreateVM {
public void Operation();
}
复制代码
public class DoPrepareWork implements CreateVM {
//编码
@Override
public void Operation() {
/*
* 启动到该对话框的步骤
*/
}
复制代码
/**
* Created with IntelliJ IDEA.
* User: whu
* Date: 12-12-12
* Time: 下午5:08
*/
public class LaunchVM implements CreateVM {
//编码
@Override
public void Operation() {
composeTab();
}
public void composeTab() {
createVM.Operation();
doSelfCompose();
}
public void doSelfCompose() {
}
}
复制代码
/**
* Created with IntelliJ IDEA.
* User: whu
* Date: 12-12-12
* Time: 下午12:37
*/
public class TabDetails extends LaunchVM {
//编码
/*
覆写父类方法
*/
public void doSelfCompose() {
selenium.click(TAB_NAME); //点击“详细信息”标签
selenium.type(SERVER_NAME_ID, this.SERVER_NAME);//输入传入的服务器名称,可由构造方法初始化
…… //其它操作
}
}
复制代码
使用方法:
要在具体测试用例中使用这个公共类,测试人员编写测试用例时,只需要几行代码就可以定制出他所需要的组合的情况。例如,假设某一测试场景需要用到第一(详细信息)和第三个(卷选项)Tab属性的虚拟机,其实现步骤如下:
CreateVM dpw = new DoPrepareWork(参数);
CreateVM tds = new TabDetails(dpw, 其它参数);
CreateVM tvo = new TabVolumeOption(tds, 其它参数);
Tvo.Operation();
复制代码
由此可见,要创建一个具有第一(详细信息)和第三个(卷选项)Tab属性的虚拟机,编码人员只需四行代码即可完成。哪怕士Tab属性都需要,也不过七行代码而已。不再需要像流水账一样,使用诸如selenium.click(),selenium.type()等这样的函数,点到第一个tab、填写内容,再点到第二个Tab、填写内容。。。。。。
使用这个公共类,编码人员可以任意顺序的构造需要用到的属性的虚拟机。组合起来相当灵活。
作者:
yazi0127
时间:
2012-12-27 09:25
很好的思路。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2