HP UFT 中 objects 的构建和参考
Buildup and reference of objects in HP UFT
我想知道如何通过 console/watch 访问 properties/methods。
我有以下代码:
Dim page
page = Browser("Welcome: Mercury Tours").Page
现在我想获取这个页面的标题。因为我用 Object Spy 检查了页面 object,我看到它有一个标题 属性.
然而,当我在手表中输入 page.title 时,它告诉我该页面不包含 属性。
1. 正确的语法是什么?
2. 为什么这不起作用?我假设手表正在检查 VBScript object 属性而不是 TestObject 属性?
(我有编程背景,我发现我有 VBObjects 和 TestObjects 只是遍历同一个文件,这让我很困惑。感觉有点像一个黑盒子: /)
好吧,你的语法不正确...
看来您正试图将某些内容放入名为 "page" 的变量中,但我不确定是否能理解您的意图。
如果您试图将页面对象放入 var "page",您将需要使用 set 语句(以向 vbscript 表明它将保存一个对象,而不仅仅是一个单独的数据)...
无论如何,您指定页面的语法是错误的。
在您的示例中,您从存储库中指定了一个名为 "Welcome: Mercury Tours" 的浏览器测试对象...但是您随后放置了 .Page - 这就是您的语法错误所在。
它有助于理解测试对象和实时对象之间的区别 - 因为您需要指定一个页面测试对象。您可以通过从对象存储库指定一个页面对象来做到这一点,或者您可以描述性地做到这一点。
测试对象是 QTP 试图找到的真实对象的描述。如果它成功找到一个符合描述的真实对象,那么测试对象类型(虚拟)"attaches to"真实对象......然后,你可以使用测试对象来查询真实对象的真实属性它附加到。
因为你显然在做教程,你的对象存储库可能在浏览器对象下的层次结构中有一个页面测试对象......(如果你让 Intellisense 帮助,它会显示一个页面列表在您键入时从中进行选择...)。如果是这样,您将像这样指定页面对象:
Browser("Welcome: Mercury Tours").Page("PageObjectNameHere")
如果您更喜欢使用描述性编程,您可以输入如下内容:
Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours")
将您的语法更改为这些构造中的任何一个都可以让您继续解决问题的下一部分 - 如何从页面获取一些数据...
因此,一旦您正确寻址了页面测试对象,您就可以指定一种方法来从中获取信息...例如 .GetROProperty()
您可以从页面的许多属性中进行选择...如果您使用 GUISPY 检查页面,它几乎会为您提供可供查询的属性列表...例如,如果您想检查URL 显示的页面,您可以指定
Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours").GetROProperty("url")
这当然是 returns 一个值,所以您想用它做点什么...比如将它赋给一个变量
result = Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours").GetROProperty("url")
(如果您这样做,您可以将变量 "result" 添加到监视列表...这回答了您的问题。)
或直接在您的代码中检查它
if Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours").GetROProperty("url") = url_to_compare then DoSomething()
我希望这有助于澄清你的理解:)
我想知道如何通过 console/watch 访问 properties/methods。
我有以下代码:
Dim page
page = Browser("Welcome: Mercury Tours").Page
现在我想获取这个页面的标题。因为我用 Object Spy 检查了页面 object,我看到它有一个标题 属性.
然而,当我在手表中输入 page.title 时,它告诉我该页面不包含 属性。
1. 正确的语法是什么?
2. 为什么这不起作用?我假设手表正在检查 VBScript object 属性而不是 TestObject 属性?
(我有编程背景,我发现我有 VBObjects 和 TestObjects 只是遍历同一个文件,这让我很困惑。感觉有点像一个黑盒子: /)
好吧,你的语法不正确...
看来您正试图将某些内容放入名为 "page" 的变量中,但我不确定是否能理解您的意图。
如果您试图将页面对象放入 var "page",您将需要使用 set 语句(以向 vbscript 表明它将保存一个对象,而不仅仅是一个单独的数据)...
无论如何,您指定页面的语法是错误的。
在您的示例中,您从存储库中指定了一个名为 "Welcome: Mercury Tours" 的浏览器测试对象...但是您随后放置了 .Page - 这就是您的语法错误所在。
它有助于理解测试对象和实时对象之间的区别 - 因为您需要指定一个页面测试对象。您可以通过从对象存储库指定一个页面对象来做到这一点,或者您可以描述性地做到这一点。
测试对象是 QTP 试图找到的真实对象的描述。如果它成功找到一个符合描述的真实对象,那么测试对象类型(虚拟)"attaches to"真实对象......然后,你可以使用测试对象来查询真实对象的真实属性它附加到。
因为你显然在做教程,你的对象存储库可能在浏览器对象下的层次结构中有一个页面测试对象......(如果你让 Intellisense 帮助,它会显示一个页面列表在您键入时从中进行选择...)。如果是这样,您将像这样指定页面对象:
Browser("Welcome: Mercury Tours").Page("PageObjectNameHere")
如果您更喜欢使用描述性编程,您可以输入如下内容:
Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours")
将您的语法更改为这些构造中的任何一个都可以让您继续解决问题的下一部分 - 如何从页面获取一些数据...
因此,一旦您正确寻址了页面测试对象,您就可以指定一种方法来从中获取信息...例如 .GetROProperty()
您可以从页面的许多属性中进行选择...如果您使用 GUISPY 检查页面,它几乎会为您提供可供查询的属性列表...例如,如果您想检查URL 显示的页面,您可以指定
Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours").GetROProperty("url")
这当然是 returns 一个值,所以您想用它做点什么...比如将它赋给一个变量
result = Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours").GetROProperty("url")
(如果您这样做,您可以将变量 "result" 添加到监视列表...这回答了您的问题。)
或直接在您的代码中检查它
if Browser("Welcome: Mercury Tours").Page("Title:=Welcome: Mercury Tours").GetROProperty("url") = url_to_compare then DoSomething()
我希望这有助于澄清你的理解:)