QTP以DOM技术处理AJAX对象最佳实践

发表于:2009-11-17 14:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Sincky    来源:51Testing软件测试网采编

  AJAX在当前的WEB应用开发中广泛使用;依靠强大的异步处理机制,AJAX实现了动态、美妙的WEB界面与服务器交互;然而对于自动化测试,AJAX确实一个冲击!传统的对象识别技术已经无法解析AJAX页面元素;今日叶赫华给大家一个实例,供测试同行学习参考!

  解析AJAX WEB页面的方式有很多,这里Sincky只是通过DOM技术这种方式来说明问题。这里以福建莆田人才在线网站为例,网址http://www.eptrc.com/job_list.aspx,打开首页后,大家会看见【企业招聘信息】区域有很多招聘信息,仔细分析它的实现技术,它不再是传统的HTML TABLE显示方式,而是DIV层技术,这也是AJAX技术里非常通用的WEB元素显示模式。现在我们以目前最主流的HP Mercury QuickTest Pro为例,来讲解如何获得该网站首页【企业招聘信息】区域所有的企业名称。

  * 打开本机安装的QTP,加载WEB插件,推荐QTP版本是9.2以上

  * 新建一个QTP脚本

  * 关闭当前桌面所有浏览器

  * 新开一个IE,定位到http://www.eptrc.com/job_list.aspx

  * 打开当前脚本的对象库,添加新对象:把刚才IE里的莆田人才网首页的Page对象加载到对象库即可;即当前脚本只有Browser和Page二级对象,方便起见,它们的名字可以改成Browser和Page;关闭对象库

  * 把以下代码拷贝到当前脚本编辑窗口

SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\叶赫华","open"
Browser("Browser").Page("Page").Sync
Browser("Browser").Navigate "http://www.eptrc.com/job_list.aspx"
Browser("Browser").Page("Page").Sync

Dim DOM, Flag, oDIVs, i, myDiv, strCompanyNameTitleDIV, mySearchTable, myChildDIVs, strCompanyName
Set DOM = Browser("Browser").Page("Page").Object.documentElement
Flag = 0
Set oDIVs = DOM.GetElementsByTagName("DIV")

For i = 0 to oDIVs.length - 1 
    If trim(oDIVs(i).innertext) = "企业招聘信息" then
        Flag = Flag + 1
        Set myDiv = oDIVs(i)
    End if
Next

If Flag = 1 Then
    Flag = 0
    Set strCompanyNameTitleDIV = myDiv.ParentNode
    If trim(strCompanyNameTitleDIV.className) = "texttitle" Then
        Set mySearchTable = strCompanyNameTitleDIV.NextSibling
        Set myChildDIVs = mySearchTable.ChildNodes

        For i = 0 to myChildDIVs.length - 1
            If trim(myChildDIVs.item(i).classname) = "row" or trim(myChildDIVs.item(i).classname) = "rowhl" Then
                Flag = Flag + 1
                strCompanyName = myChildDIVs.item(i).firstChild.getElementsByTagName("DIV").item(1).innertext
                Print strCompanyName
            End If
        Next
    End If
End If

Set oDIVs = Nothing
Set DOM = Nothing

  * 关闭刚才的IE;执行该QTP脚本,会弹出QTP打印小窗口,显示莆田人才网首页企业招聘信息区域所有的企业名称,例如我这里执行结果是:

好朋友茶叶茶具连锁机构
莆田市人才职业培训学校
恒信贸易
泉州蒙羊
福建莆田市远润装修装饰有限公司
兴安药业有限公司
拓森贸易
莆田永辉超市有限公司
福洲晋安区网玛动漫人才培训中心
莆田天发投资咨询有限公司
易迈贸易有限公司
莆田市东南纸业工贸有限公司
神龙木业有限公司
莆田市竞升生物科技发展有限公司
兄弟连医疗网络公司
莆田市华达电子有限公司
正荣(莆田)置业发展有限公司
东兴贸易有限公司
快乐星幼儿园
欧捷投资贸易

  说明:这里Sincky用的是最土的全页扫描方式来获取关键字标记;如果需要处理的AJAX区域有特别标记,可以此标记去定位AJAX区域,再进一步处理,从而节省脚本执行时间。(首发于Sincky的搜狐博客)

相关阅读:

他和他的QTP——51Testing专题采访

最新QTP识别flex4方法研究

QTP六脉神剑之调用Java程序

精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号