大家關注一下上面代碼中打了下劃線的兩處內容,應該可以看到,使用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]); |
原文轉自:http://www.anti-gravitydesign.com