|
例如:获取一个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"})) |
|