无法通过网址识别帧

时间:2015-08-12 10:51:28

标签: vbscript automation automated-tests qtp

我使用GetRoProperty方法获取框架的URL和HTML ID,并使用相同的值通过描述性编程来识别对象。

QTP使用HTML ID识别对象,但是当它使用URL来识别其节目时

  

无法识别对象" [Frame]" (类Frame)。验证   此对象的属性与当前显示在您的对象中的对象匹配   应用

     

第(24)行:"打印浏览器(" SAP - [搜索:帐户]")。窗口("合作伙伴选择文档")。页面(&# 34;合作伙伴选择文档")。框架(" url:="& rourl).GetROProperty(" html id")"。

在OR中,QTP仅使用URL识别帧,而没有任何其他属性。

以下是涉及的代码行:

rourl=Browser("SAP - [Search: Accounts]").Window("Partner Selection Document").Page("Partner Selection Document").Frame("Frame").GetROProperty("url")

print rourl
roid=Browser("SAP - [Search: Accounts]").Window("Partner Selection Document").Page("Partner Selection Document").Frame("Frame").GetROProperty("html id")
print roid

print Browser("SAP - [Search: Accounts]").Window("Partner Selection Document").Page("Partner Selection Document").Frame("html id:="&roid).GetROProperty("html id")
'prints html id
print Browser("SAP - [Search: Accounts]").Window("Partner Selection Document").Page("Partner Selection Document").Frame("url:="&rourl).GetROProperty("html id")
'shows error message

框架的网址为http://part1.part2.part3.part4.com:8082/sap(bD1FTiZjPTUwMCZpPTEmZT1WRVZUVkY5Rk1rVkJWVlJQTVRJM01USmZWY3gxMlR4aUNVRGhBSUFBQ2hvd2NnJTNkJTNk)/bc/bsp/sap/crm_ui_frame/bspwdapplication.do?popup-name=_POPUP0001&wcf-request-ticket=929D13152F6D62ACF1AB51BD8BDC2819

我已将网址修改为

http://part1\.part2\.part3\.part4\.com:8082/sap\(bD1FTiZjPTUwMCZpPTEmZT1WRVZUVkY5Rk1rVkJWVlJQTVRJM01USmZWY3gxMlR4aUNVRGhBSUFBQ2hvd2NnJTNkJTNk\)/bc/bsp/sap/crm_ui_frame/bspwdapplication\.do\?popup-name=_POPUP0001&wcf-request-ticket=929D13152F6D62ACF1AB51BD8BDC2819

但仍未确定。

rourl="http://part1\.part2\.part3\.part4\.com:8082/sap\(bD1FTiZjPTUwMCZpPTEmZT1WRVZUVkY5Rk1rVkJWVlJQTVRJM01USmZWY3gxMlR4aUNVRGhBSUFBQ2hvd2NnJTNkJTNk\)/bc/bsp/sap/crm_ui_frame/bspwdapplication\.do\?popup-name=_POPUP0001&wcf-request-ticket=929D13152F6D62ACF1AB51BD8BDC2819"
Browser("SAP - [Search: Accounts]").Window("Select Transaction Type").Page("Select Transaction Type").Frame("url:="&rourl).GetROProperty("html id")

1 个答案:

答案 0 :(得分:0)

问题可能是因为描述性编程使用正则表达式,默认情况下对象存储库不使用正则表达式。

您的网址可能包含在作为正则表达式查看时具有不同含义的特殊字符。 往往出现在网址中的最明显的正则表达式特殊字符是.?。我认为您在使用?时遇到问题(因为.匹配".",但这可能会导致含糊不清。

试试这个:

Function EscapeRegex(str)
    str = Replace(str, "?", "\?")
    str = Replace(str, ".", "\.")
    EscapeRegex = str   
End Function

print Browser("SAP - [Search: Accounts]").Window("Partner Selection Document").Page("Partner Selection Document").Frame("html id:="& EscapeRegex(roid)).GetROProperty("html id")

如果这不能解决您的问题,请在EscapeRegex功能中添加特殊字符,如果仍然无法使其工作,请发布导致此问题的示例网址。

这里的参考是一个特殊正则表达式字符的(部分?)列表: []*.?+^$()|{}\(此处为how it's done in javascript)。