少年智则国智,少年富则国富,少年强则国强,少年独立则国独立,少年自由则国自由,少年进步则国进步,少年胜于欧洲,则国胜于欧洲,少年雄于地球,则国雄于地球。红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初胎,矞矞皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;前途似海,来日方长。美哉,我少年中国,与天不老!壮哉,我中国少年,与国无疆!
QTP以DOM技术处理AJAX对象最佳实践【附源码】
上一篇 /
下一篇 2009-09-25 12:39:31
-}.s
Ew_]0 公元2006年后,AJAX在当前的WEB应用开发中广泛使用;依靠强大的异步处理机制,AJAX实现了动态、美妙的WEB界面与服务器交互;然而对于自动化测试,AJAX确实一个冲击!传统的对象识别技术已经无法解析AJAX页面元素;今日叶赫华给大家一个实例,供测试同行学习参考!51Testing软件测试网6{ClL `sc:\Z
解析AJAX WEB页面的方式有很多,这里Sincky只是通过DOM技术这种方式来说明问题。这里以福建莆田人才在线网站为例,网址http://www.eptrc.com/job_list.aspx,打开首页后,大家会看见【企业招聘信息】区域有很多招聘信息,仔细分析它的实现技术,它不再是传统的HTML TABLE显示方式,而是DIV层技术,这也是AJAX技术里非常通用的WEB元素显示模式。现在我们以目前最主流的HP Mercury QuickTest Pro为例,来讲解如何获得该网站首页【企业招聘信息】区域所有的企业名称。
^oUuyK"u0- 打开本机安装的QTP,加载WEB插件,推荐QTP版本是9.2以上
- 新建一个QTP脚本
- 关闭当前桌面所有浏览器
- 新开一个IE,定位到http://www.eptrc.com/job_list.aspx
- 打开当前脚本的对象库,添加新对象:把刚才IE里的莆田人才网首页的Page对象加载到对象库即可;即当前脚本只有Browser和Page二级对象,方便起见,它们的名字可以改成Browser和Page;关闭对象库
- 把以下代码拷贝到当前脚本编辑窗口
(k0X"[x_"Y#P0SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\叶赫华","open"51Testing软件测试网8qKWTR([5h
Browser("Browser").Page("Page").Sync51Testing软件测试网df'\w6I{Y}
Browser("Browser").Navigate "http://www.eptrc.com/job_list.aspx"
]V6p,usZ0Browser("Browser").Page("Page").Sync
dNH+Jz9Y_&m,?0*U!V8o xI^Pr{0Dim DOM, Flag, oDIVs, i, myDiv, strCompanyNameTitleDIV, mySearchTable, myChildDIVs, strCompanyName51Testing软件测试网H
E1L/lHt,f6k
Set DOM = Browser("Browser").Page("Page").Object.documentElement51Testing软件测试网$bm{u8AB j7r
Flag = 0
/i
P/j,^8j'Z0Set DIVs = DOM.GetElementsByTagName("DIV")
2ECy,rH;CT|0'j bap w2?4L K9H0For i = 0 to oDIVs.length - 1
j.wi!OALH0 If trim(oDIVs(i).innertext) = "企业招聘信息" then
o?4o"Cof6g0 Flag = Flag + 151Testing软件测试网Hw%|/y A.qI
Set myDiv = oDIVs(i)51Testing软件测试网?4Mu/w"c;\ D
End if
8A)N!g:??y4@7Mkv0I0Next51Testing软件测试网.Z4mx3`(_o
51Testing软件测试网e5|%`znbp$]5C&GIf Flag = 1 Then51Testing软件测试网U6xr'Qk8{5L
Flag = 051Testing软件测试网'B'E9?PKM*V
Set strCompanyNameTitleDIV = myDiv.ParentNode51Testing软件测试网lTd!S-Y-Y+e]@(N
If trim(strCompanyNameTitleDIV.className) = "texttitle" Then
Hl$T!]F1P-VNc0 Set mySearchTable = strCompanyNameTitleDIV.NextSibling51Testing软件测试网}%ex'j@
Set myChildDIVs = mySearchTable.ChildNodes
R/C"q8\
S*F iX051Testing软件测试网gqWR9f7Ds@ For i = 0 to myChildDIVs.length - 1
U;?tN%M {DL0 If trim(myChildDIVs.item(i).classname) = "row" or trim(myChildDIVs.item(i).classname) = "rowhl" Then51Testing软件测试网1?
R&ynM
Flag = Flag + 151Testing软件测试网)o$xj}+cZc
strCompanyName = myChildDIVs.item(i).firstChild.getElementsByTagName("DIV").item(1).innertext
h N-Wc3M
S1\0 Print strCompanyName
_zA#uAz\*C0 End If51Testing软件测试网VRzTtDR+W-J
Next51Testing软件测试网]6p*gfR*U~&T
End If
_1I1TA'K/O0End If51Testing软件测试网f(@E*E2|7k
JN
51Testing软件测试网)B,}g)`QK,H/C0HSet DIVs = Nothing51Testing软件测试网7l-|%c4V
mVT g'~
Set DOM = Nothing
1X'~I"B'S})Oz0
- 关闭刚才的IE;执行该QTP脚本,会弹出QTP打印小窗口,显示莆田人才网首页企业招聘信息区域所有的企业名称,例如我这里执行结果是:
.Ms(mX?J ]0好朋友茶叶茶具连锁机构
]8d3C
BL!w0莆田市人才职业培训学校
&v1O&i
CA1U0恒信贸易
-lpMxynJn0泉州蒙羊51Testing软件测试网3|:nlPm#a5J!C%e
福建莆田市远润装修装饰有限公司51Testing软件测试网y[tug"f6Fz
兴安药业有限公司51Testing软件测试网.kI"t8E?DkFs
拓森贸易
6ePw9h&~X |mE#\*i0莆田永辉超市有限公司
6y(W%z:Z}"B N1kC}F0福洲晋安区网玛动漫人才培训中心51Testing软件测试网(pe @ ?eyKt+u
莆田天发投资咨询有限公司51Testing软件测试网AUbY:\
x
易迈贸易有限公司51Testing软件测试网6`4l*[!|!w{'Pq
莆田市东南纸业工贸有限公司51Testing软件测试网,T
] [A[
神龙木业有限公司
BV6v{8u0莆田市竞升生物科技发展有限公司51Testing软件测试网ME5\!L5@0tOu
兄弟连医疗网络公司51Testing软件测试网u?[u+CFbx
莆田市华达电子有限公司51Testing软件测试网x
Y.y?fj
正荣(莆田)置业发展有限公司51Testing软件测试网&@2d2ZL(?(@4]
东兴贸易有限公司
FV#B!B1@0快乐星幼儿园
n DQW4L7[0欧捷投资贸易
51Testing软件测试网O%o&@,H!|!m5c说明:这里Sincky用的是最土的全页扫描方式来获取关键字标记;如果需要处理的AJAX区域有特别标记,可以此标记去定位AJAX区域,再进一步处理,从而节省脚本执行时间。51Testing软件测试网xQl$kpY Pqy*@
dY`-gV:EB~0 【完】 作者:叶赫华 2009年9月51Testing软件测试网#O@}Z3Qeh
收藏
举报
TAG: