51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2655|回复: 0
打印 上一主题 下一主题

SilkTest获取对象ID属性的方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-1-5 16:14:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
例如:获取一个HTMLLINK对象的IDSIlkTest本身不提供方法支持该功能。
通过自定义方式实现,分为静态获取和动态获取。   

例如有如下的html页面

源文件如下:
<html>
<title>demo</title>
<body>
<a id=link1 name=demo href="http://www.baidu.com"><b>3 Person Dome Tent</b></a>
</body>
</html>

现在的问题就是要通过HTMLLINK的其他属性确定该对象,再获取ID属性的值,此处为link1
一、静态获取方法
//@parama wHtmlWin-HTML控件对象
//@parama sAttribute-需要获取的属性名称,name,id等等
//@return 对象属性对应的值
[-] String GetAttributeValue(window wHtmlWin, string sAttribute)
[ ] //Get a String with the Tag information
[ ] string sDec = WindowTag(wHtmlWin)
[ ] string sClass = [string]ClassOf(wHtmlWin)
[ ] int iBegin = StrPos(sClass,sDec)
[ ] string sAllAttributes = SubStr(sDec,iBegin+Len(sClass)+1)
[ ] int iCount = 1
[ ] string sAttribField = GetField(sAllAttributes,"|",iCount)
[-] while(sAttribField != "")
  [-] if(Left(sAttribField,1) == "&")
   [ ] break
  [ ] iCount++
  [ ] sAttribField = GetField(sAllAttributes,"|",iCount)
[ ] sAttribField = SubStr(sAttribField,2)
[ ] iCount = 1
[ ] string sFAttrib = GetField(sAttribField,";",iCount)
[-] while(sFAttrib != "")
  [-] if(Left(sFAttrib,Len(sAttribute)+1) == "{sAttribute}=")
   [ ] break
  [ ] iCount++
  [ ] sFAttrib = GetField(sAttribField,";",iCount)
[ ] string sFinalAttrib = ""
[-] if(sFAttrib != "")
  [ ] sFinalAttrib = StrTran(sFAttrib,"{sAttribute}=","")
  [ ] sFinalAttrib=StrTran(sFinalAttrib,"'","")
[ ] //retrun the attribute value
[ ] return sFinalAttrib
在需要获取对象属性的地方调用该方法即可,调用实例如下:
//获取控件名称为EnterGMOOnLine的HTML控件ID属性值
string a=GetAttributeValue(EnterGMOOnLine,"id")
这个解决方案不够完美,每当开发人员修改了页面控件的定义,必需重新生成测试脚本的 框架文件,因此尝试采用动态获取的方式。


二、动态获取方式
采用4Test脚本和Java script DOM解析HTML源文件,在执行SilkTest脚本的过程中调用JS动态从界面上获取ID属性值
//JAVA Script代码
//@parama tag_type-HTML标签
//@parama namestr-HTML对象的NAME属性值
[-] list of string lsJS={...}
  [ ]  "function geta(tag_type,namestr) "{"
  [ ]  "var allTags = document.getElementsByTagName(tag_type);"
  [ ] "for (i=0;i<allTags.length;i++)"
  [ ] ""{"
  [ ] "if (allTags[i].getAttribute(""name"")==namestr) "
  [ ]  ""{"
  [ ]  "s=allTags[i].id;"
  [ ]  "}"
  [ ] "}"
  [ ]   "return s;"
  [ ]   "};"
[ ] print(lsJS)
[ ]  WelcomeToGreenMountainOutp.ExecScript (lsJS)
//根据HTML对象的NAME属性获取对应的ID
[ ]  Print (WelcomeToGreenMountainOutp.ExecFunction("geta", {"input","bSubmit"}))
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 07:43 , Processed in 0.071081 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表