在列表中,如何使用描述性编程如何解决多对象情况下选择其中一个进行点击
本帖最后由 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= 再加一个属性, 比喻href,看一下是不是有规律的。我的经验是href 比较长,但是是有规律的,第一个部门审批 的href 可能是http://192.********_1*****,第二个部门审批就可能是http://192.********_2*****, 再将其中的_1 进行参数化就可以了。 我平常这么做旧成功了 把
.Link("text:=部门审批").Click
换成Set AuthLink=.WebTable("html tag:=TABLE","name:=部门审批").ChildItem(i, 2, "Link", 0)
AuthLink.Click .Link("text:=部门审批").Click
改为
.WebTable("html tag:=TABLE","name:=部门审批").Link("text:=部门审批","index:="&i-2).Click 参见3楼 参见3楼
lyscser 发表于 2011-8-31 16:03 http://bbs.51testing.com/images/common/back.gif
ChildItem方法在很多情况下都会返回一个空对象...已经不再信赖它了~~还是用ChildObjects或者直接写比较可靠些:) 这种Table和Link的组合绝不会返回空对象 这得看页面代码是怎么写的,曾经做的web的项目中,有两个就是table中的所有子对象都不能通过ChildItem来获取,包括WebElement,Link等等,index从0试到了N都不行,开发解释可能是跟页面的安全性相关,和一般网站上的可能会有些不一样。没办法只好用ChildObejcts去解决。LS说"绝不"略有点武断了哦:) 只有QTP不能真正识别的WebElement才会出这种情况,你所说的Link肯定不是QTP里标准的Link类,看页面源代码就知道控件定义了 QTP可以将其spy为WebElement和Link,如果QTP不能正确识别其类型,那使用ChildObjects指定micclass属性为link的话也同样会得不到Link对象 谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦 谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦 谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
页:
[1]