lovetest6 发表于 2005-6-10 16:37:13

关于ChildObjects_Example

Sub ChildObjects_Example()
'The following example uses the ChildObjects method to find all the
'list objects on a Web page, and then to select an item in each list.

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebList"
Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)
NumberOfLists = Lists.Count()
For i = 0 To NumberOfLists - 1
Lists(i).Select i + 1
Next


End Sub

我想
help中的这段代码应该是这样理解的。

取得页面中所有的下拉框。

比如这个论坛列表页有三个下拉框

论坛跳转
查看-->精华主题
查看-->按升序排列

那个help中的例子,就是取得这三个下拉框对象。
也就是
Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)

然后呢?就比较好懂了,
for循环中的
Lists(i).Select i + 1
就是第一个下拉框select第一项,
第二个下拉框select第二项。
注意:这里的项,也就是下拉框中的选项应该是从零开始的。

所以,如果是我们论坛的话第一次执行循环,
结果是select 论坛跳转中的第二项
“> [软件测试论坛公告]”

不知道说到这里,大家是否明白了,
我没有看MI的网站,但是我想它在help中给出的这个例子并不合适,
不知道大家以为如何。


这也就是我们在如何点webtable中的link中讨论的那个例子。

lovetest6 发表于 2005-6-10 16:42:03

主要的不合适,就是那个i 和NumberOfLists

靠,让人不知道到底是下拉框的个数,还是下拉框中选项的个数。

但是有一点,可以肯定,MI这个例子中可能自己也比较糊涂
Lists( i ).Select i + 1
呵呵,为什么还要加一呢,呵呵,
weblist是从0开始的嘛。呵呵。

lovetest6 发表于 2005-6-10 16:43:02

help写成这个样子,真是让我这样的糊涂人不知道怎么学了哦,呵呵:)

但愿只有这一处。

QA_BAY 发表于 2005-6-10 16:59:59

.....然后呢?就比较好懂了,
for循环中的
Lists(i).Select i + 1
就是第一个下拉框select第一项,
第二个下拉框select第二项。
注意:这里的项,也就是下拉框中的选项应该是从零开始的。

所以,如果是我们论坛的话第一次执行循环,
结果是select 论坛跳转中的第二项
“> [软件测试论坛公告]”

当循环到第二次就开始出错了,
页面刷新,QTP认不了,所以要找一下静态的试一试才知道!
修改I值为1,从第二个方框执行起.脚本还是出错.
原因不知为何?

lovetest6 发表于 2005-6-10 17:08:09

用附件中的html试一下。就知道了。

lovetest6 发表于 2005-6-10 17:13:42

结果是如图所示,呵呵。

QA_BAY 发表于 2005-6-10 17:18:41

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebList"
Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)
NumberOfLists = Lists.Count()
For i = 0 To NumberOfLists - 1
Lists(i).Select i + 1
Next


End Sub
这个是相对于静态来说是可以的.但动态就不行.要作出相应的改变!
要不然后回放就会出错,说认不到这个OBJECT!
MI的HELP使用要细化!

lovetest6 发表于 2005-6-10 17:28:32

如果把
For i = 1 To NumberOfLists - 1

执行第二次循环的时候,i=2,i+1=3,但是最后一个下拉框没有第三项哦

QA_BAY 发表于 2005-6-10 17:34:22

知道了!THX

tracyd 发表于 2008-12-22 04:02:24

我们大概都没有好好读他那段英文解释

'The following example uses the ChildObjects method to find all the 'list objects on a Web page, and then to select an item in each list."
一开始我也一直搞不懂为何我上creweely.com,执行的代码总是显示1。那个weblist可有好多好多。一直到我down下了select.html才明白这个list objects是指一共在页面上显示多少个weblist的对象个数,而不是weblist的选项个数。

那如果我要写一个dp, 算出其中一个weblist object一共有多少个weblist下拉列表可以选择,该如何写呢? 让我试试,大家也在这里讨论讨论。

tracyd 发表于 2008-12-22 05:39:22

找到了:

http://bbs.51testing.com/thread-132523-1-10.html

要用如下描述:
Ver_count=Browser("Browser").Page("Page").weblist("filter1").GetROProperty ("items count")
这个是count number的。结果是filter1有9个。

Ver_item=Browser("Browser").Page("Page").weblist("filter1").GetROProperty ("all items")
这个是返回所有的filter1列表里面的值。
原来getroproperty还有这个作用。
页: [1]
查看完整版本: 关于ChildObjects_Example