我使用GetRoProperty方法获取框架的URL和HTML,并通过描述性编程使用相同的值来标识对象。
QTP使用HTML标识对象,但当它使用URL标识其显示时
无法识别对象“框架”(类框架)。验证此对象的属性是否与应用程序中当前显示的对象匹配。 行(24):“打印浏览器(”SAP-搜索:帐户“).Window(”合作伙伴选择文档“).Page(”合作伙伴选择.Page 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帧的url是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")发布于 2015-08-12 14:04:20
这个问题可能是因为描述性编程使用正则表达式,而对象存储库默认不使用正则表达式。
您的URL可能包含特殊字符,这些字符在作为正则表达式时具有不同的含义。URL中最明显的正则表达式特殊字符是.和?。我认为?存在问题(因为.与"."匹配,但它可能导致歧义。
试试这个:
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)。
https://stackoverflow.com/questions/31963080
复制相似问题