51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2820|回复: 12
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 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=

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-8-31 11:57:38 | 只看该作者
再加一个属性, 比喻  href,  看一下是不是有规律的。  我的经验是  href 比较长,但是是有规律的,第一个部门审批 的href 可能是  http://192.********_1*****,第二个部门审批就可能是http://192.********_2*****, 再将其中的_1 进行参数化就可以了。 我平常这么做旧成功了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-8-31 14:35:18 | 只看该作者

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

使用道具 举报

该用户从未签到

4#
发表于 2011-8-31 15:51:09 | 只看该作者
.Link("text:=部门审批").Click

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

使用道具 举报

该用户从未签到

5#
发表于 2011-8-31 16:03:01 | 只看该作者
参见3楼
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2011-8-31 16:13:23 | 只看该作者
参见3楼
lyscser 发表于 2011-8-31 16:03


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

使用道具 举报

该用户从未签到

7#
发表于 2011-8-31 21:26:07 | 只看该作者
这种Table和Link的组合绝不会返回空对象
回复 支持 反对

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

9#
发表于 2011-9-1 10:26:01 | 只看该作者
只有QTP不能真正识别的WebElement才会出这种情况,你所说的Link肯定不是QTP里标准的Link类,看页面源代码就知道控件定义了
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2011-9-1 10:44:09 | 只看该作者
QTP可以将其spy为WebElement和Link,如果QTP不能正确识别其类型,那使用ChildObjects指定micclass属性为link的话也同样会得不到Link对象
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2011-9-1 13:01:31 | 只看该作者
谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2011-9-1 13:04:01 | 只看该作者
谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2011-9-1 13:04:16 | 只看该作者
谢谢大侠们的解答,我自己也找到解决了,和3楼的方法一样。谢谢啦
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 05:37 , Processed in 0.080402 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表