技术开发 频道

使用Selenium进行Web测试项目框架

  【IT168 技术文档】最近看了一下selenium如果要把这个用于自动化测试,需要进行整理,形成一个框架,我也对Google搜索这样简单的功能做了一些尝试,形成了一个简单的框架,简单的说应该有四层:

  第一层应该是UIObject这个对象层,主要是用来封装对象的操作方法,例如:

  Java代码:

1. public class TextFieldUIObject extends UIObject {

  
2.

  
3. /**

  4. * 构造函数用于构造textfield对象

  5. *
@param locator 描述信息

  6.
*/

  
7. public TextFieldUIObject(String locator)

  
8. {

  
9. super(locator);

  
10. }

  
11. /**

  12. * 向textfield输入值

  13. *
@param content 输入的内容

  14. *
@throws SeleniumHelperNotExistException

  15.
*/

  
16. public void type(String content) throws SeleniumHelperNotExistException

  
17. {

  
18. if(UIObjectHelper.SeleniumHelper==null) throw new SeleniumHelperNotExistException();

  
19. UIObjectHelper.SeleniumHelper.type(this.locator,content);

  
20. }

  
21. }

  该代码,封装了textfield的控件,加入了方法type用于输入。

  第二层主要是构件层,主要用来描述页面上的控件,这里我用了最简单的静态变量的方法,还可以使用yml,xml,json甚至某种格式的文本文件进行描述,之后根据文件生成,这样可能会更加方面修改。

  代码如下:

  Java代码: 

1. public class GoogleGuis {

  
2. public static PageUIObject SearchPage = new PageUIObject("/");

  
3. public static TextFieldUIObject SearchInput = new TextFieldUIObject("q");

  
4. public static ButtonUIObject SearchButton = new ButtonUIObject("btnG");

  
5. }

  第三层应该叫组件层,可以页面切分成大组件,然后对组件进行相关的操作,这里把Google的搜索作为一个组件,代码如下:

1. /**

  2. * 组件类

  3. *
@author renzq

  4. *

  5.
*/

  
6. public class GooglePageSearchComponent {

  
7.

  
8. /**

  9. * 进行查询操作

  10. *
@param content 查询的内容

  11. *
@throws SeleniumHelperNotExistException

  12.
*/

  
13. public void search(String content) throws SeleniumHelperNotExistException{

  
14. GoogleGuis.SearchPage.PageOpen();

  
15. GoogleGuis.SearchInput.type(content);

  
16. GoogleGuis.SearchButton.click();

  
17. GoogleGuis.SearchPage.WaitForPageReady("3000");

  
18.

  
19. }

  
20. /**

  21. * 校验查询结果是否含有内容

  22. *
@param content 内容

  23. *
@return 根据是否含有,返回判断的值

  24. *
@throws SeleniumHelperNotExistException

  25.
*/

  
26. public boolean checkText(String content) throws SeleniumHelperNotExistException{

  
27. return GoogleGuis.SearchPage.PageTextContain(content);

  
28. }

  
29.

  
30. }

  第四层,应该就是测试断言层,这个部分用来执行testcase。

  Java代码:

1. public class GoogleSearch extends SeleneseTestCase{

  
2.

  
3. public void setUp() throws Exception {

  
4. super.setUp("http://www.google.com/", "*iexplore");

  
5. com.asiainfo.selenium.gui.UIObjectHelper.SeleniumHelper=selenium;

  
6. }

  
7.

  
8. public void testNew() throws Exception {

  
9. GooglePageSearchComponent gpsc=new GooglePageSearchComponent();

  
10. gpsc.search("asiainfo");

  
11. assertTrue(gpsc.checkText("asiainfo"));

  
12.

  
13. }

  
14. }

  如果使用testsuite就应该有第五层,这层主要用来组织testcase。

  这样的划分,也是我的一点拙见,我觉得还是后提高的空间的。相关的源代码,我也上传上来,有兴趣的可以在附件下载。

0
相关文章