coco5945 发表于 2011-8-31 11:27:49

在列表中,如何使用描述性编程如何解决多对象情况下选择其中一个进行点击

本帖最后由 coco5945 于 2011-8-31 13:13 编辑

在图的这个列表中我的目的是想通过前面的流程号,对该流程号的表单进行“部门审批”,但是用描述性编程总提示“部门审批”这个对象存在多个,事实也确实如此。我能得到这个流程号参数,和列表中的进行对比,找到这个流程号对应的行。但是怎么去用描述性编程来去点击该行的那个“部门审批”链接呢,以下是程序代码:

Set curPage=Browser("name:=系统 - 待处理工作列表").Page("title:=系统 - 待处理工作列表")
Set curSHPage=Browser("name:=系统 - 工作表单").Page("title:=系统 - 工作表单")
With curPage
'‘获取webtable的总行数,放入rows
Dim rows,lch,i
   i=1
   rows = .WebTable("html tag:=TABLE","name:=部门审批").GetROProperty("rows")
   For i = 2 to rows
    '   ‘把第二行开始的第二列的值放入lch中
      lch = .WebTable("html tag:=TABLE","name:=部门审批").GetCellData(i,1)
   '    ‘判断如果两者一致,则选择该行,点确定按钮
          If lch =Parameter("FMClch") Then
               
    .Link("text:=部门审批").Click‘这句会提示这个对象存在多个。怎么区分这个对象呢,部门审批其它属性值都差不多,就是链接不一样,
         End If
   Next
End With


.Link("text:=部门审批").Click‘这句会提示这个对象存在多个。怎么区分这个对象呢,部门审批其它属性值都差不多,就是链接不一样,也不能用。请高手们指教下。
部门审批的链接是,看不出什么规律来,应该用的是参数传递的
http://192.168.1.204:81/fileexchangeweb/redirectoWorkItemPage.aspx?ActivityID=6BuYr2krHi0=&WorkItemID=qGGieLgWVx4=&instanceID=HwfZO7qmiiU=


http://192.168.1.204:81/fileexchangeweb/redirectoWorkItemPage.aspx?ActivityID=2p0oRMbLGjc=&WorkItemID=xypNv0xZ9wU=&instanceID=PVczH2yoqwI=

binllyyu 发表于 2011-8-31 11:57:38

再加一个属性, 比喻href,看一下是不是有规律的。我的经验是href 比较长,但是是有规律的,第一个部门审批 的href 可能是http://192.********_1*****,第二个部门审批就可能是http://192.********_2*****, 再将其中的_1 进行参数化就可以了。 我平常这么做旧成功了

ermine 发表于 2011-8-31 14:35:18


.Link("text:=部门审批").Click
换成Set AuthLink=.WebTable("html tag:=TABLE","name:=部门审批").ChildItem(i, 2, "Link", 0)
AuthLink.Click

hsjzfling 发表于 2011-8-31 15:51:09

.Link("text:=部门审批").Click

改为
.WebTable("html tag:=TABLE","name:=部门审批").Link("text:=部门审批","index:="&i-2).Click

lyscser 发表于 2011-8-31 16:03:01

参见3楼

hsjzfling 发表于 2011-8-31 16:13:23

参见3楼
lyscser 发表于 2011-8-31 16:03 http://bbs.51testing.com/images/common/back.gif

ChildItem方法在很多情况下都会返回一个空对象...已经不再信赖它了~~还是用ChildObjects或者直接写比较可靠些:)

lyscser 发表于 2011-8-31 21:26:07

这种Table和Link的组合绝不会返回空对象

hsjzfling 发表于 2011-9-1 10:12:11

这得看页面代码是怎么写的,曾经做的web的项目中,有两个就是table中的所有子对象都不能通过ChildItem来获取,包括WebElement,Link等等,index从0试到了N都不行,开发解释可能是跟页面的安全性相关,和一般网站上的可能会有些不一样。没办法只好用ChildObejcts去解决。LS说"绝不"略有点武断了哦:)

lyscser 发表于 2011-9-1 10:26:01

只有QTP不能真正识别的WebElement才会出这种情况,你所说的Link肯定不是QTP里标准的Link类,看页面源代码就知道控件定义了

hsjzfling 发表于 2011-9-1 10:44:09

QTP可以将其spy为WebElement和Link,如果QTP不能正确识别其类型,那使用ChildObjects指定micclass属性为link的话也同样会得不到Link对象

coco5945 发表于 2011-9-1 13:01:31

谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦

coco5945 发表于 2011-9-1 13:04:01

谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦

coco5945 发表于 2011-9-1 13:04:16

谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
页: [1]
查看完整版本: 在列表中,如何使用描述性编程如何解决多对象情况下选择其中一个进行点击