Watij介绍
Javadoc API for Watij:
http://watij.sourceforge.net/docs/api/index.html?watij/IE.html
第三章 Watij环境设置
3.1 Watij环境要求
l Watij 3.2.1
l JDK 1.5
l Java IDE(本文中使用Eclipse)
3.2 Watij安装及设置
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,设置“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导航、IE窗口的设置与调整。
本次Web自动化测试的例子使用LoadRunner中自带的HP Web Tours。
如没有安装LoadRunner,可在其他已安装过的机器上拷贝X:/Mercury/LoadRunner/WebTours目录,执行“StartServer.bat”以启动Web Server(没有试验过,理论上可以);或者使用其他网址替换掉4.1.1中的“http://127.0.0.1:1080/WebTours/”来练习,但是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();
//转到 “http://127.0.0.1:1080/WebTours/”
ie.goTo("http://127.0.0.1:1080/WebTours/");
}
}
4. 运行:输入以上代码并保存后,选择“Run as”->“JUnit Test”,如图4.1-4所示。
图4.1-4 运行
5. 执行结果:执行过程没有错误时,JUnit执行状态显示绿色(图4.1-5),并且打开HP Web Tours的登录页面(图4.1-6)。
图4.1-5 JUnit执行状态
图4.1-6 登录页面
6. 代码解释:
1) 在打开IE浏览器之前,需要实例化一个IE对象:
IE ie = new IE();
2) 使用start方法,打开新的IE浏览器:
IE ie = new IE();
ie.start();
也可以打开浏览器后转到某个URL:
IE ie = new IE();
ie.start("http://google.com");
3) IE导航的几种方法:
ie.goTo("http://www.baidu.com"); //转到www.baidu.com
ie.navigate("http://www.google.com"); //转到www.google.com,同goTo
ie.forward(); //转到历史列表中的前一个地址
ie.back(); //转到历史列表中的后一个地址
4) IE窗口设置、调整:
ie.bringToFront(); //将IE窗口置为最前
ie.focus(); //设置为当前焦点
ie.maximize(); //最大化窗口
ie.minimize(); //最小化窗口
ie.restore(); //重置窗口为之前的状态
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); //调整窗口位置
ie.top(200); //调整窗口位置
4.1.2 用户登录测试
模拟用户输入;登录成功后,验证提示信息及HTML元素数量。
启动WEB服务器及新建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根据HTML标签提供的文字输入列的name、id或其他属性来设置其值。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> 标签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) 验证用户是否已经登录:
验证该用户是否已经登录,可以通过提示信息是否包含该用户的名字以及左边框架中包含四个buttons来验证。验证HTML body中是否包含某些文本,使用如下方法:
ie.containsText(“jojo”);
它的返回值是True或False,可以使用断言来验证该用户是否已登录:
assertTrue( ie.containsText(“jojo”) );
4) 截图:
最后,要保存一下测试结果,即将登录后窗口截图。如下代码,会将当前屏幕截图保存到d:/login_PASSED.png。
ie.screenCapture(“d://login_PASSED.png”);