Watij介紹
Javadoc API for Watij:
http://watij.sourceforge.net/docs/api/index.html?watij/IE.html
第三章 Watij環(huán)境設(shè)置
3.1 Watij環(huán)境要求
l Watij 3.2.1
l JDK 1.5
l Java IDE(本文中使用Eclipse)
3.2 Watij安裝及設(shè)置
l 下載軟件包
Watij 3.2.1:
下載地址:http://sourceforge.net/project/showfiles.php?group_id=165206
JDK 1.5:
下載地址:http://java.sun.com/javase/downloads/index_jdk5.jsp
l 安裝&配置
Ø 安裝JDK1.5;
Ø 解壓watij_release_3.2.1.zip;
Ø 拷貝watij_release_3.2.1/ jniwrap.dll到C:/windows/system32/;
Ø 配置Eclipse的編譯器為JDK1.5;
依次打開Window->Preferences->Java->Compiler,設(shè)置“Compiler compliance level”為5.0

圖3.2-1 配置JDK
l 新建工程
Ø 依次打開New->Project,選擇“Java Project”,點擊“Next”
Ø “Project Name”中輸入“Watij”,點擊“Next”
Ø 在“Java Settings”中選擇“Libraries”選項卡,點擊“Add External JARs”,如圖3.2-2所示
Ø 添加“watij.jar”和lib目錄下的所有jar,點擊“Finish”,如圖3.2-2所示

圖3.2-2 添加Jar包到classpath中
第四章 Watij Examples
4.1 HP Web Tours
4.1.1 顯示登錄頁面
這部分主要描述如何打開IE瀏覽器、IE導(dǎo)航、IE窗口的設(shè)置與調(diào)整。
本次Web自動化測試的例子使用LoadRunner中自帶的HP Web Tours。
如沒有安裝LoadRunner,可在其他已安裝過的機(jī)器上拷貝X:/Mercury/LoadRunner/WebTours目錄,執(zhí)行“StartServer.bat”以啟動Web Server(沒有試驗過,理論上可以);或者使用其他網(wǎng)址替換掉4.1.1中的“http://127.0.0.1:1080/WebTours/”來練習(xí),但是4.1.2及以后的例子將不再適用。 下面就開始Watij的自動化測試之旅了。
1. 啟動Web Server(圖4.1-1)。本例中使用LoadRunner的實例HP Tours作為本次WEB自動化測試的對象。

圖4.1-1 啟動Web Server
2. 打開Eclipse,新建一個“Junit Test Case”(圖4.1-2),輸入“Name”為“HpTours”(圖4.1-3),點擊“Finish”

圖4.1-2 新建Junit Test Case

圖4.1-3 輸入TestCase的Name
3. 輸入以下代碼:
import junit.framework.TestCase;
import watij.runtime.ie.IE;
import static watij.finders.SymbolFactory.*;


public class HpTours extends TestCase
{

public void testHpTours () throws Exception
{
IE ie = new IE();

//打開 IE 瀏覽器
ie.start();
//轉(zhuǎn)到 “http://127.0.0.1:1080/WebTours/”
ie.goTo("http://127.0.0.1:1080/WebTours/");
}
}
4. 運(yùn)行:輸入以上代碼并保存后,選擇“Run as”->“JUnit Test”,如圖4.1-4所示。

圖4.1-4 運(yùn)行
5. 執(zhí)行結(jié)果:執(zhí)行過程沒有錯誤時,JUnit執(zhí)行狀態(tài)顯示綠色(圖4.1-5),并且打開HP Web Tours的登錄頁面(圖4.1-6)。

圖4.1-5 JUnit執(zhí)行狀態(tài)

圖4.1-6 登錄頁面
6. 代碼解釋:
1) 在打開IE瀏覽器之前,需要實例化一個IE對象:
IE ie = new IE();
2) 使用start方法,打開新的IE瀏覽器:
IE ie = new IE();
ie.start();
也可以打開瀏覽器后轉(zhuǎn)到某個URL:
IE ie = new IE();
ie.start("http://google.com");
3) IE導(dǎo)航的幾種方法:
ie.goTo("http://www.baidu.com"); //轉(zhuǎn)到www.baidu.com
ie.navigate("http://www.google.com"); //轉(zhuǎn)到www.google.com,同goTo
ie.forward(); //轉(zhuǎn)到歷史列表中的前一個地址
ie.back(); //轉(zhuǎn)到歷史列表中的后一個地址
4) IE窗口設(shè)置、調(diào)整:
ie.bringToFront(); //將IE窗口置為最前
ie.focus(); //設(shè)置為當(dāng)前焦點
ie.maximize(); //最大化窗口
ie.minimize(); //最小化窗口
ie.restore(); //重置窗口為之前的狀態(tài)
ie.fullScreen(true); //turns the window's full screen mode on
ie.fullScreen(false); //turns the window's screen mode back to normal
ie.theatreMode(true); //turns the window's theatre mode on
ie.theatreMode(false); //turns the window's screen mode back to normal

ie.visible(false); //隱藏窗口
ie.visible(true); //顯示窗口
ie.left(100); //調(diào)整窗口位置
ie.top(200); //調(diào)整窗口位置
4.1.2 用戶登錄測試
模擬用戶輸入;登錄成功后,驗證提示信息及HTML元素數(shù)量。
啟動WEB服務(wù)器及新建JUnit Test Case步驟,請參考4.1.1。
1. 輸入以下代碼:
import watij.runtime.ie.IE;
import junit.framework.TestCase;
import static watij.finders.SymbolFactory.*;


public class LoginWithRightUsernamePassword extends TestCase
{


public void testLoginWebTours () throws Exception
{

int button_id;
int button_numbers = 4;
String[] button_src = new String[button_numbers];

IE ie = new IE();
ie.start();
ie.bringToFront();
ie.goTo("http://127.0.0.1:1080/WebTours");
ie.frame("body").frame("navbar").textField(name, "username").set("jojo");
ie.frame("body").frame("navbar").textField(name, "password").set("bean");
ie.frame("body").frame("navbar").button(value, "Login").click();

// Verify user "jojo" has logged in and four buttons displayed
assertTrue( ie.frame("body").frame("info").containsText("jojo") );


for (button_id=0; button_id<button_numbers; button_id++)
{
button_src[button_id] = ie.frame("body").frame("navbar").images().get(button_id).src();
}
// Capture current Screen
ie.focus();
ie.maximize();
ie.screenCapture("d://login_PASSED.png");
}
}
2.代碼解釋:
1) 輸入用戶名、密碼:
Watij根據(jù)HTML標(biāo)簽提供的文字輸入列的name、id或其他屬性來設(shè)置其值。textfield的HTML代碼形如:
<input type=text name=username value='' size=14 maxlength=14>

<input type=password name=password value='' size=14 maxlength=14>

輸入用戶名、密碼,可以使用如下方法:
ie.textField(name, “username”).set(“jojo”);
ie.textField(name, “password”).set(“bean”);
獲取某個textfield的值,使用:
ie.textField(name, “username”).get();
ie.textField(name, “password”).get();
2) 點擊Login,登錄:
Watij中button支持的HTML對象包括:<input> 標(biāo)簽type為image、submit、button或reset
<input type=image name=login value=Login alt=Login border=1 src='/WebTours/images/mer_login.gif'>

<input type="submit" id="SubmitLoginBTN" value="登錄(L)" accesskey="L" class="loginSubmit" />

<input type="button" value="登錄" name="btnSubmit">

使用button的click方法來模擬用戶點擊操作:
ie.button(value, “Login”).click();
ie.button(id, “SubmitLoginBTN”).click();
ie.button(name, “btnSubmit”).click();

3) 驗證用戶是否已經(jīng)登錄:
驗證該用戶是否已經(jīng)登錄,可以通過提示信息是否包含該用戶的名字以及左邊框架中包含四個buttons來驗證。驗證HTML body中是否包含某些文本,使用如下方法:
ie.containsText(“jojo”);
它的返回值是True或False,可以使用斷言來驗證該用戶是否已登錄:
assertTrue( ie.containsText(“jojo”) );
4) 截圖:
最后,要保存一下測試結(jié)果,即將登錄后窗口截圖。如下代碼,會將當(dāng)前屏幕截圖保存到d:/login_PASSED.png。
ie.screenCapture(“d://login_PASSED.png”);