大家关注一下上面代码中打了下划线的两处内容,应该可以看到,使用Get、Post方法访问页面的区别就是使用的请求对象不同。
4.2 处理页面中的链接
这里的演示是找到页面中的某一个链接,然后模拟用户的单机行为,获得它指向文件的内容。比如在我的页面HelloWorld.html中有一个链接,它显示的内容是TestLink,它指向我另一个页面TestLink.htm. TestLink.htm里面只显示TestLink.html几个字符。
下面是处理代码:
//用getText方法获取相应的全部内容 |
4.3 处理页面中的表格
表格是用来控制页面显示的常规对象,在HttpUnit中使用数组来处理页面中的多个表格,你可以用resp.getTables()方法获取页面所有的表格对象。他们依照出现在页面中的顺序保存在一个数组里面。
[注意] Java中数组下标是从0开始的,所以取第一个表格应该是resp.getTables()[0],其他以此类推。
下面的例子演示如何从页面中取出第一个表格的内容并且将他们循环显示出来:
System.out.println("获取页面中表格的内容:");
//建立一个WebConversation实例 WebConversation wc = new WebConversation(); //获取响应对象 WebResponse resp = wc.getResponse( " http://localhost:6888/HelloWorld.html " ); //获得对应的表格对象 WebTable webTable = resp.getTables()[0]; //将表格对象的内容传递给字符串数组 String[][] datas = webTable.asText(); //循环显示表格内容 int i = 0 ,j = 0; int m = datas[0].length; int n = datas.length; while (i<n){ j=0; while(j<m){ System.out.println("表格中第"+(i+1)+"行第"+(j+1)+"列的内容是:"+datas[j]); ++j; } ++i; } |
4.4 处理页面中的表单
表单是用来接受用户输入,也可以向用户显示用户已输入信息(如需要用户修改数据时,通常会显示他以前输入过的信息),在HttpUnit中使用数组来处理页面中的多个表单,你可以用resp.getForms()方法获取页面所有的表单对象。他们依照出现在页面中的顺序保存在一个数组里面。
[注意] Java中数组下标是从0开始的,所以取第一个表单应该是resp.getForms()[0],其他以此类推。
下面的例子演示如何从页面中取出第一个表单的内容并且将他们循环显示出来:
System.out.println("获取页面中表单的内容:"); //建立一个WebConversation实例 WebConversation wc = new WebConversation(); //获取响应对象 WebResponse resp = wc.getResponse( " http://localhost:6888/HelloWorld.html " ); //获得对应的表单对象 WebForm webForm = resp.getForms()[0]; //获得表单中所有控件的名字 String[] pNames = webForm.getParameterNames(); int i = 0; int m = pNames.length; //循环显示表单中所有控件的内容 while(i<m){ System.out.println("第"+(i+1)+"个控件的名字是"+pNames+",里面的内容是"+webForm.getParameterValue(pNames)); ++i; } |
5 如何使用httpunit进行测试
5.1 对页面内容进行测试
httpunit中的这部分测试完全采用了JUnit的测试方法,即直接将你期望的结果和页面中的输出内容进行比较。不过这里的测试就简单多了,只是字符串和字符串的比较。
比如你期望中的页面显示是中有一个表格,它是页面中的第一个表格,而且他的第一行第一列的数据应该是显示username,那么你可以使用 下面的代码进行自动化测试:
System.out.println("获取页面中表格的内容并且进行测试:"); //建立一个WebConversation实例 WebConversation wc = new WebConversation(); //获取响应对象 WebResponse resp = wc.getResponse( " http://localhost:6888/TableTest.html " ); //获得对应的表格对象 WebTable webTable = resp.getTables()[0]; //将表格对象的内容传递给字符串数组 String[][] datas = webTable.asText(); //对表格内容进行测试 String expect = "中文"; Assert.assertEquals(expect,datas[0][0]); |