51Testing软件测试论坛

标题: 【已解决】qtp webtable.childitem 建立虚拟子对象后提示对象不存在 [打印本页]

作者: 小丫头amy    时间: 2012-12-10 17:17
标题: 【已解决】qtp webtable.childitem 建立虚拟子对象后提示对象不存在
本帖最后由 黑羽祭 于 2012-12-12 11:25 编辑

目的,进入51个人空间管理中,搜索内容,如果有搜索到对应的内容,则在选挚的勾选框
代码如下:
with Browser("个人空间管理").Page("个人空间管理")
rowcount=.WebTable("标题").RowCount
msgbox rowcount
columncout=.WebTable("标题").ColumnCount(1)
msgbox columncout
end with
For row=0 to rowcount-1
celldata=Browser("个人空间管理").Page("个人空间管理").WebTable("标题").GetCellData(row+1,2)

For i=1 to 2
   Select Case i
   Case 1
         searchchar1="excel导入错误"
         return=instr(1,celldata,searchar1)
   If return<>0 Then
         set oWebCheckBox =Browser("个人空间管理").Page("个人空间管理").WebTable("标题").ChildItem(row+1, 1, "WebCheckBox", 0)
           oWebCheckBox.set  "on"         
  Set oWebCheckBox=nothing
           Exit for
   End If

   Case 2
           searchchar2="qtp参数化报错"
            return=instr(1,celldata,searchar2)
                 If return<>0 Then
          set oWebCheckBox= Browser("个人空间管理").Page("个人空间管理").WebTable("标题").ChildItem(row+1,1,"WebCheckBox",0)
           oWebCheckBox.set  "on"
           Set oWebCheckBox=nothing
           Exit for
           end if
   End Select
next
Next

但是oWebCheckBox.set  "on"
一直提示无该对象?这个是什么原因呢?
作者: 黑羽祭    时间: 2012-12-11 09:34
回复 1# 小丫头amy


    大概看上去
set oWebCheckBox =Browser("个人空间管理").Page("个人空间管理").WebTable("标题").ChildItem(row+1, 1, "WebCheckBox", 0)
oWebCheckBox.set "on"         
Set oWebCheckBox=nothing
这部分没什么问题啊。
检查下符号(不要用中文符号)啊,空格啊什么的看看
实在不行脚本发我邮箱,我帮你再看看
cydblack@163.com
作者: joykao    时间: 2012-12-11 10:57
set oWebCheckBox =Browser("个人空间管理").Page("个人空间管理").WebTable("标题").ChildItem(row+1, 1, "WebCheckBox", 0)
           oWebCheckBox.set  "on"

貌似oWebCheckBox 返回的应该是个集合吧。。。。你把集合set on 不靠谱吧。。。。。
作者: 泰然    时间: 2012-12-11 11:52
楼上正确。

看帮助,ChildItem Returns the collection of child objects contained within the object.

ChildItem这个方法返回一个子对象集。哪怕这个子对象集中只有1个对象,你也要用.item(0)来表示子对象集中的第一个对象。
作者: 小丫头amy    时间: 2012-12-11 14:26
回复 4# 泰然


    采用这种objecet.item(i) 还是会报缺少对象的错误
作者: 黑羽祭    时间: 2012-12-11 14:54
回复 1# 小丫头amy


    已解决,上代码:
  1. '''获取行和列
  2. With Browser("个人空间管理").Page("个人空间管理")
  3.         rowcount=.WebTable("标题").RowCount
  4.         msgbox "行数 = " & rowcount
  5.         columncout=.WebTable("标题").ColumnCount(1)
  6.         msgbox "列数 = " & columncout
  7. End With


  8. For row=0 to rowcount-1
  9.         celldata=Browser("个人空间管理").Page("个人空间管理").WebTable("标题").GetCellData(row+1,2)
  10.         
  11.         For i=1 to 2
  12.                 Select Case i
  13.                         Case 1
  14.                                 searchar1="excel导入错误"
  15.                                 return=instr(1,celldata,searchar1)
  16.                                 If return<>0 Then
  17.                                         set oWebCheckBox =Browser("个人空间管理").Page("个人空间管理").WebTable("标题").ChildItem(row+1, 1, "WebCheckBox", 0)
  18.                                         oWebCheckBox.set  "on"
  19.                                         Set oWebCheckBox=nothing
  20.                                         Exit for
  21.                                 End If
  22.                
  23.                         Case 2
  24.                                 searchar2="qtp参数化报错"
  25.                                 return=instr(1,celldata,searchar2)
  26.                                 If return<>0 Then
  27.                                         set oWebCheckBox= Browser("个人空间管理").Page("个人空间管理").WebTable("标题").ChildItem(row+1,1,"WebCheckBox",0)
  28.                                         oWebCheckBox.set  "on"
  29.                                         Set oWebCheckBox=nothing
  30.                                         Exit for
  31.                                 End if
  32.                 End Select
  33.         Next
  34. Next
复制代码


你的问题在
searchchar1="excel导入错误"
return=instr(1,celldata,searchar1)

这句子,上面的变量searchchar1(注意有两个ch),到了下面searchar1(只有一组ch)了。
要不是我一行一行调下来,真是不容易发现。
粗心啊~
作者: 黑羽祭    时间: 2012-12-11 14:58
回复 3# joykao


    ChildItem(row+1, 1, "WebCheckBox", 0)
得到的是子集,但是,这句的最后一个参数0,等同于index:=0,所以就能确定下是哪一个了
作者: 黑羽祭    时间: 2012-12-11 14:58
回复 4# 泰然


        ChildItem(row+1, 1, "WebCheckBox", 0)
得到的是子集,但是,这句的最后一个参数0,等同于index:=0,所以就能确定下是哪一个了
作者: joykao    时间: 2012-12-11 15:39
回复 7# 黑羽祭

开始么有看清楚,判断比较下来是单个的元素,语法么有错误,楼主把我给玩了哇,,变量名字前后不一致。。。。。
作者: 小丫头amy    时间: 2012-12-11 17:10
回复 9# joykao


    粗心了,谢谢!!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2