51Testing软件测试论坛

标题: 在列表中,如何使用描述性编程如何解决多对象情况下选择其中一个进行点击 [打印本页]

作者: coco5945    时间: 2011-8-31 11:27
标题: 在列表中,如何使用描述性编程如何解决多对象情况下选择其中一个进行点击
本帖最后由 coco5945 于 2011-8-31 13:13 编辑

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

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[attach]75055[/attach][attach]75055[/attach][attach]75055[/attach]

[attach]75057[/attach]
.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
再加一个属性, 比喻  href,  看一下是不是有规律的。  我的经验是  href 比较长,但是是有规律的,第一个部门审批 的href 可能是  http://192.********_1*****,第二个部门审批就可能是http://192.********_2*****, 再将其中的_1 进行参数化就可以了。 我平常这么做旧成功了
作者: ermine    时间: 2011-8-31 14:35

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

作者: hsjzfling    时间: 2011-8-31 15:51
.Link("text:=部门审批").Click

改为
.WebTable("html tag:=TABLE","name:=部门审批").Link("text:=部门审批","index:="&i-2).Click
作者: lyscser    时间: 2011-8-31 16:03
参见3楼
作者: hsjzfling    时间: 2011-8-31 16:13
参见3楼
lyscser 发表于 2011-8-31 16:03


ChildItem方法在很多情况下都会返回一个空对象...已经不再信赖它了~~还是用ChildObjects或者直接写比较可靠些
作者: lyscser    时间: 2011-8-31 21:26
这种Table和Link的组合绝不会返回空对象
作者: hsjzfling    时间: 2011-9-1 10:12
这得看页面代码是怎么写的,曾经做的web的项目中,有两个就是table中的所有子对象都不能通过ChildItem来获取,包括WebElement,Link等等,index从0试到了N都不行,开发解释可能是跟页面的安全性相关,和一般网站上的可能会有些不一样。没办法只好用ChildObejcts去解决。LS说"绝不"略有点武断了哦
作者: lyscser    时间: 2011-9-1 10:26
只有QTP不能真正识别的WebElement才会出这种情况,你所说的Link肯定不是QTP里标准的Link类,看页面源代码就知道控件定义了
作者: hsjzfling    时间: 2011-9-1 10:44
QTP可以将其spy为WebElement和Link,如果QTP不能正确识别其类型,那使用ChildObjects指定micclass属性为link的话也同样会得不到Link对象
作者: coco5945    时间: 2011-9-1 13:01
谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
作者: coco5945    时间: 2011-9-1 13:04
谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
作者: coco5945    时间: 2011-9-1 13:04
谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦




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