十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

Watij——Java Web 测试

上一篇 / 下一篇  2011-02-27 15:58:03 / 个人分类:测试经验

查看( 3305 ) / 评论( 4 )
Watij——Java开源Web测试工具51Testing软件测试网)F0W*tE6r#R9Z(K
一个非常好用的Java Web测试框架,虽然这方面也曾经在HtmlUnit、JWebUnit和HttpUnit之间犹豫过,不发现了Watij之后就决定是它了。这里翻译一下官方的Quick Start Guide,更多内容请访问官方网站(http://watij.com)。
d%](Zk/m l-M @0 1.下载Watij51Testing软件测试网(K*Y,n7f%R!E5P%?
https://sourceforge.net/project/showfiles.php?group_id=165206下载Watij的发布版本51Testing软件测试网.X:G._1V1e%^
解压watij_X_x.x.zip51Testing软件测试网z'f!M9by#] k(]|4K
2.安装
R'g[7d'l-G0 将jniwrap.dll复制到system32目录下(通常为C:/WINDOWS/system32/)51Testing软件测试网8XN%{)`1_Z,Z$L \
打开你最喜爱的IDE并创建一个工程(我最喜欢的是Intellj)
%]-r [ J u_#V1\0 将watij.jar以及lib目录下的所有jar包都加入到工程的classpath中51Testing软件测试网 wYS4@w5|C j
创建一个JUnit TestCase,并确保包含这句话“import static watij.finders.SymbolFactory.\*;”
B!g M#ywr LZ?0 试着编写如下示例程序
:}CwztmH"t0 注意:在/watij_X_xx/src/java-test/watij下可以查看示例程序
"Q@ ]4E#]0 Google Search Test Example51Testing软件测试网Yb lL*] _
import junit.framework.TestCase;51Testing软件测试网8t5X q[ C%pL\j
import static watij.finders.SymbolFactory.*;
A;hE3[il&P0
M qlCi2E0 public class GoogleTest extends TestCase {51Testing软件测试网9_*tz+[b
    public void testGoogleSearch() throws Exception {51Testing软件测试网!r,H.O#F.ouP
        IE ie = new IE();
Gk\C0w$fG ep0         ie.start("http://www.google.com");
C6jpy0C4la4Y0         ie.textField(name,"q").set("XWiki");
W'Zn:@0}0         ie.button("Google Search").click();
5le7YVs&g3?q.@6y!p0         assertTrue(ie.containsText("/Java wiki engine/"));
x C5^~Zz5|*\0     }
d7y8[Kz p \$iU0 }
D9~xA;e!@O$d M0]0 注意,具体方法可以查询Watij的Javadoc API文档。
6OR-zN|/F/{+R k0 使用BeanShell
Q!PK3Yt3~4Hka0 在BeanShell中输入如下代码并运行51Testing软件测试网 ~c6o4y h!C#f
图。。。
bF_!yc-L0
yX"ps@6H%C?2ksS8J0 再介绍些UserGuide中现有的内容
(R/C-ek#a-bw0 创建一个IE浏览器实例51Testing软件测试网3Z:PyK&LW7}Y
IE ie = new IE();51Testing软件测试网A-q,^t)a:V"JIQ${
51Testing软件测试网S ]-m{e
启动一个IE浏览器实例51Testing软件测试网['F?e4\
IE ie = new IE();51Testing软件测试网 o,FJ!kb0zF(r7T
ie.start();51Testing软件测试网8X K4I Wp.D-n
51Testing软件测试网2m3N!mAg7d
启动一个IE浏览器实例并访问Google51Testing软件测试网vnZ"d_*|[|2Q&^
IE ie = new IE();51Testing软件测试网t&XY/`!^-N VT ^ fz2}E
ie.start("http://www.google.com");51Testing软件测试网lX!`E$]%P7eW3\5\
使用当前已经打开的IE浏览器51Testing软件测试网6rYIri Dwo_4r}
根据URL指定
1X9|9A8ds7@2d0
y1LsZ&h?0 IE ie = new  IE();
au+V+w ?Z0 ie.attach(url,"http://www.google.com")51Testing软件测试网gyd|o6K}

1? x+F7gf jx,D0 根据标题指定51Testing软件测试网+Z"i!_8M"R1p&`
51Testing软件测试网 m+^1K1_'pHh Yo
IE ie = new IE();
R,C%y"F'V#W0 ie.attach(title,"Google");51Testing软件测试网e sa xz/w"u]Yt4_B

1Ei:U-r%@:d7B0 IE导航
FM @z)yG0 ie.goTo("http://www.mysite.com");用IE浏览器访问www.mysite.com
3IeK+{)d0 51Testing软件测试网JX&s8b(m-O[ C Q6u
ie.navigate("http://www.mysite.com");功能同上51Testing软件测试网+A_;J};f ^
51Testing软件测试网bRr(Y,c(Kvo/G
ie.forward(); 相当于浏览器中的“前进”
pvh7u D&F u$J0 51Testing软件测试网cxE-tK p
ie.back(); 相当与浏览器中的“后退”51Testing软件测试网1Ivg%B,Eb

6?GL/|2Cc0s&H0 窗口焦点、位置、大小以及模式的设置
Y1S H ])dUc3cK0 ie.bringToFront(); //将窗口置于其他浏览器窗口之前
!Jc(lV3W4dc^&r0 ie.focus(); //设定焦点为指定的ie窗口51Testing软件测试网xD+Tg"d'tF!_

0e7G Y|9U"z+w3m0 ie.maximize(); //将窗口最大化,知道占满整个屏幕51Testing软件测试网C)XFk T`5N lZ
  ie.minimize(); //将窗口最小化
~NUDH!cN t0 ie.restore(); //将窗口的大小设为上一次的大小。
*At2ah jeD@-L0
Dit)y(I_ Lp2?0   ie.fullScreen(true); //打开窗口的全屏幕模式51Testing软件测试网QIu5y#l-@+JA;H
  ie.fullScreen(false); //禁止窗口的全屏幕模式 51Testing软件测试网/B&Mw(j_;M;_*v
51Testing软件测试网 T)x"x%NW-K?!j[ F J
  ie.theatreMode(true); //打开窗口的剧院(Theatre)模式51Testing软件测试网&O(J%TG)k4J'd+T
  ie.theatreMode(false); //禁止窗口的剧院模式
.] C?9a;K~%T0
)iUO nw cE;g PX0   ie.visible(false); //将窗口从桌面上隐藏起来51Testing软件测试网5CN CX1QYr
  ie.visible(true); //恢复窗口可见51Testing软件测试网1S2P UT&E

;af#b)bq&d,p0   ie.left(100); /将窗口到屏幕的左边距设为10051Testing软件测试网,v6e,Kg4dLn ` yj3g$D
  ie.top(200); //将窗口到屏幕的上边距设为200
/F+c,nx,AjFD0e Q0 得到页面中name="button1"的按钮
s*\@7D ksyz0   ie.button(name,”button1”);
F6c[)d(DB9zLC0   
c*BbaY9| [(^$x~0 得到页面中name="deleteButton"的所有按钮集合
wr.KT:w^pZ0   ie.buttons(name,”deleteButton”);51Testing软件测试网,l"N3a"t{9j@ \
得到上面这个集合中的第二个元素,即页面中第二个name="deleteButton"的按钮51Testing软件测试网_3gGK[Ly/Z;Lk |-A
ie.buttons(name,”deleteButton”).get(1);  
+P*vax-C^0 // OR51Testing软件测试网B5X&Q3qg5J
  ie.buttons(name,”deleteButton”).button(1); 51Testing软件测试网VO8bL/T_
  
7D3Q J9P},e0 得到页面中name="deleteButton",value="delete"的所有按钮集合中的第三个按钮51Testing软件测试网k/S2U N+P
  Button button = ie.buttons(name,”deleteButton”).buttons(value,”Delete”).button(2);
:EW4X F"O dQ0   
~*Yx vg h:p`0 得到页面中<MYTAG>的HTML元素
D$bp&\D:]0 例如<MYTAG>My Text1</MYTAG>
!]OD:_.B)Vk6[.nL0 ie.htmlElement(tag,”MYTAG”);
`["x'K6J7}0 51Testing软件测试网 p!F\ g&w U A&c `
假如有51Testing软件测试网6FTs0mN
<MYTAG myattr1=”attribute1”>My Text1</MYTAG>
slu y*M0   <MYTAG myattr2=”attribute2”>My Text2</MYTAG>
k'X+Pn8t^5Jk ~'mG0 则可以通过如下方式得到第一个元素51Testing软件测试网c"}qc$PO5|
  ie.htmlElement(attribute(“myattr1”,"attribute1"));
r4{/RvF+P w,a1de\0   其中htmlElement()中的参数还可以换成以下方式
hny;lU:I0   tag(String tagName)51Testing软件测试网U4N6{,xh gjG
  attribute(String name, String value)
9dR(cC/IK7L0   index(int index)51Testing软件测试网C&Tz*{qD
text(String text)51Testing软件测试网4~*I e rg,g9]
name(String value)51Testing软件测试网9eQ dJ+v1_ Q
value(String value)
b9ft H5DB,R7x)c0 caption(String value)
3gH z(J0{)y~1qm#p0 id(String value)51Testing软件测试网8DLl8D0Q1^
title(String value)
~&_$Sq$lO-_+vwq0 alt(String value)51Testing软件测试网+m6M2i SuD }'d-@1e7J
src(String value)51Testing软件测试网*oxY fG xc
action(String value)
%U_:Z1Ll@1c0ym0 method(String value)
)?@4a\Jg0 url(String value)51Testing软件测试网%y[,a Md$CU
href(String value)51Testing软件测试网1kf$T9Pu1K"Y9l9F
xpath(String expression)51Testing软件测试网f w3p ~K M xOWR:~N3es'o

nKf0X^ k0 超链接51Testing软件测试网dJ0i HD6}P
假如页面中有如下链接51Testing软件测试网7l'| r(Iaw
<a href="http://google.com">Google</a>
gU)YV/m0d0uCB+m5v0 则可以通过text,url和xpath三种方式得到该链接,并可以使用正则表达式作为参数,click()表示模拟点击该链接51Testing软件测试网4h&i#O:bS
ie.link(text,"Google").click();51Testing软件测试网F/A%|@Lg6`'g B%}
51Testing软件测试网(L9cPp| b&CH
ie.link(text,"/oogl/").click();
'xog1H8j1S0
-O a*j;OMp0 ie.link(url,"http://google.com").click();51Testing软件测试网IM.hnj
51Testing软件测试网owl+_G z}
ie.link(url,"/google.com/").click();
Vx|+|#Y[B)U}5UjU0
5Y(W{ [.q%mf2ZE(|0 ie.link(xpath, "//A[@url='http://google.com']").click();
P5y2t5lM4J4xP\a%t0
2G8f+v5Z)o m0 多选框
N@ Q1_8G;?v$}0 假如页面中有如下多选框51Testing软件测试网D2GJ3m1h+rpj*[
Check Me: <input name="checkme" value="1" type="checkbox">51Testing软件测试网yx\X2R2K%t:\EC
则可以通过如下方式来实现勾选该多选框
M5XQ#{\M `+X0~d0 ie.checkbox(name,"checkme").set();51Testing软件测试网"uTO/_9k#\3@'[

},B ]eu0 ie.checkbox(value,"1").set();51Testing软件测试网S&~%nx*k2e;\ | Qw
51Testing软件测试网wc8C D3x G)X
ie.checkbox(xpath, "//INPUT[@name='checkme' and @value='1']").set();
5C5U1x-c^!AH0 还可以调用clear()来取消多选框的选中状态
7r L Z{wL0
V!^4nc vT1y;po0 单选框
5rR*Sm"Wa4yrph.?0 假如页面中有如下单选框
YE7f(vD D0 Click Me: <input name="clickme" id="1" type="radio">
PQp(Ej1nfK$D+V0 则可以通过如下方式来实现勾选该多选框51Testing软件测试网p8xG [$p*k
ie.radio(name,"clickme").set();51Testing软件测试网;L+_ c%|P-q4^
51Testing软件测试网I])B r!T,P
ie.radio(id,"1").set();51Testing软件测试网9lN`~C,d&^1H"M

,U+hu Ik:xpN0|0 ie.radio(xpath, "//INPUT[@name='clickme' and @id='1']").set();
I iNd!@.e0 还可以调用clear()来取消单选框的选中状态
H1Y2@ntTS0 51Testing软件测试网9EfTy+G,beC
按钮
-Z,@@%X)D0 假如页面中有如下按钮51Testing软件测试网D*P0JawZ0b
<input type = "submit" value = "ClickTheButton" name="b1"></input>51Testing软件测试网3q u!\8f#G P1[}(R m
可以通过如下方式得到该按钮
3@e'^,x&C/M!BHFL0 ie.button(name, "b1").click();
T0H0MaQ3j*x0
WEJw4uY@g |0 ie.button(value,"ClickTheButton").click();51Testing软件测试网O.Imi$WrB
默认会根据按钮的value值来寻找该按钮,如
jA fi0rj;~-`9Fm"[/v0 ie.button("ClickTheButton").click();
#_cS2fTs1V0
~:wln'u0 下拉列表
/rI,|0p?Y$M0 假如页面中有如下下拉列表
^6y1k6i.?I0 <select name = "selectme" > <option name="1">O1<option name="2">O2</select>
"n5S]'^TR]+u4u6b;Q t0 可以通过如下方式选中该下拉列表中的选项51Testing软件测试网Ba(S n"rq!V5R
//(finds the option in the select list with name 1)
qw {qm4|-D0 ie.selectList(name, "selectme").option(name,"1").select(); 51Testing软件测试网(B Liz c b
51Testing软件测试网\/G/n.Z&ZQ(g
//(finds the second option in the list)
h6`*uy[9a3Iy0 ie.selectList(name, "selectme").option(index,1).select(); 51Testing软件测试网 w-} ^+a$a"x`-T A/A

0H S}#X4u t0 //(返回当前下拉列表是否可用,即disable的状态)51Testing软件测试网)SNe3U&? t
ie.selectList(name, "selectme").disabled();51Testing软件测试网MU5s.q m4r_/{

7O,qbT1T q}0 可以使用clearSelection()方法清除下拉列表的选中状态。
1}HO0ht:vI|T0 51Testing软件测试网F)r!G z0}3J1R
图片
8G4[ U.H:q8yuN0 假如页面中有如下图片元素
J+ZHf-k*{+spE1}n0 <img src = images/square.jpg id=square title="square_image">
4q1P:]-Pj2q y"v0 可以通过如下方式实现点击该图片51Testing软件测试网+M V8EP!Of
ie.image(src, "/square/").click();
e'Fd$V5kR6Ji0
w-nF2}hX!s_6T!C0 ie.image(title, "square_image").hasLoaded();51Testing软件测试网[5E7P-nJt\

u5gh`z%g7K4`%k%L0 ie.image(id,"square").width();51Testing软件测试网2T)sAcfb&F9Y1K

i(T1P-GC0 ie.image(xpath, "//IMAGE[@id='square']").click();
#F]e"xml6D'R0
)tJ1Q0QP0y9wu |tY0 文本框和多行文本区域
IW-Z x"H#w Q0 假如页面中有如下文本框
;G @kY xf0 <input name="username" type="text">51Testing软件测试网 O;s,P`s$lj AM
可以通过如下方式得到文本框的值,或设置其值51Testing软件测试网"p#wv g#uv2p2Oh X8j
ie.textField(name, "username").set("myusername");
h1P3Y&U0dt&sIB0
W%DW1MKp0 ie.textField(name, "username").value();
|$z?(mH W*Rx0 得到子浏览器51Testing软件测试网rQ%ySoF#?;V a+V
当当前浏览器打开一个新的浏览器窗口时,可以使用如下方法得到新的窗口
(fR;E p*q8qP"J0 IE ie = new IE().start("www.mysite.com");
YsXe9T%Nv0 //lets click a link that causes a new window to popup51Testing软件测试网,U"V mn Uj.QL
ie.link(name, "mylink").click();51Testing软件测试网g Mmx@Y1LU| Q
//now lets get a handle on the child browser;
-C{4f(GU&v5I!S0 IE new_ie = ie.childBrowser();

TAG:

Jamie dengxiaof520 发布于2011-05-13 17:36:27
您好,想问下版主,您现在还在用Watij么?期待您的回复.
etheltim的个人空间 etheltim 发布于2011-11-23 12:39:21
回复 1# msnshow
m"D
Ee"O[tt-Fwww.51testing.com

Z:c4Z}\_"ZWv中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务------------------版本在线吗?向您请教一下WATIJ的问题?请问WATIJ能否用于exe进程框架的吗?
anqiongdy发布于2011-11-26 11:34:08
不能吧  进程非IE的话  就用不了
ryugun的个人空间 ryugun 发布于2011-12-19 12:48:34
watj 和 selenium 比较 如何呢?
我来说两句

(可选)

Open Toolbar