51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7085|回复: 13
打印 上一主题 下一主题

[原创] 怎么使用QTP获取页面一个对象的值,这个值是动态的

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-11-21 15:22:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整个是一个电子流的流程,页面页头有一个控件,用于显示一条电子流的信息,其中一个是这个电子流的流水号信息,现在要获取这个流水号的信息

页面控件大概是这个样子,由于公司限制,不可以贴图

流水号:GZ2011110001

这个是静态的,不可以编辑,应该怎么获取?

用QTP获取GZ2011110001这个对象时,对象的Name为GZ2011110001,innertext为GZ2011110001,html tag为span,类型为WebElement

用GetROProperty可以获取这个值吗?

流水号是唯一标识一个流程的,换一个流程能否获取到这个值?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2015-9-18 10:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2011-11-22 10:38:22 | 只看该作者
    应该可以。
    在对象库里存的对象,name可以自定义的。你可以以innertext为作为唯一标识,然后获取这个值。
    Browser("a").Page("a").WebElement("GZ2011110001").GetROProperty("innertext")
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2011-11-22 10:52:12 | 只看该作者
    每个流程的name是不是不一样的?

    如果你每个流程的流水号不一样,看看什么规则,用正则表达式匹配一下。
    然后再用楼上说的GetROProperty
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2011-11-22 10:54:03 | 只看该作者
    你这个流水号每次都会变的吧  建议用描述性编程   你每个流水号开头的GZ是不变的吧?
    如果是 就写成GZ.*,如果页面有多个的话 就在加一个标识  两个确定唯一一个就可以了 最后再用GetROProperty(),就可以了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2011-11-22 11:24:06 | 只看该作者
    回复 2# futogether


    谢谢,可以获取到值,只是报了一个警告
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2011-11-22 11:26:20 | 只看该作者
    回复 3# ermine


      
    每个流程的name是不一样,QTP获取对象时都是以显示的值作为name的

    流程号的规则是GZ+年+月+四位数依次递增

    用正则表达式匹配,然后再用GetROProperty是什么意思?不是太懂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2011-11-22 11:27:40 | 只看该作者
    回复 4# nicholaszou


    再加一个标识是什么意思?什么是描述性编程?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2011-11-22 13:51:01 | 只看该作者
    首先 你要获取的页面是不是只有一个 流水号 如果只有一个的话
    Browser("title:=a").Page("title:=a").WebElement("innertext:=GZ.*").GetROProperty("innertext")               

    这么写就可以 ,但是如果页面有多个流水号 你就在加一个标识
    Browser("title:=a").Page("title:=a").WebElement("innertext:=GZ.*","xxx:=xx").GetROProperty("innertext")   就可以了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2011-11-22 14:10:23 | 只看该作者
    回复 8# nicholaszou


        谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2011-11-22 17:26:54 | 只看该作者
    回复 6# hslqin

    如果不太懂描述性编程,最简单的是在对象库中改。
    在属性里面,有个正则的勾选,把这个选中就是使用正则,然后name的属性里写好规则,比如:GZ.*

    加一个标示的意思,是指如果你当前页面有多个符合正则的对象,QTP就不识别了,比如既有GZ123456,又有GZ654321,需要用其他的属性来区分。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
     楼主| 发表于 2011-11-23 11:45:05 | 只看该作者
    回复 10# ermine


        明白了,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2011-11-23 12:13:11 | 只看该作者
    推荐10楼的方法,描述性编程还是少用,也不是这么用的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2012-10-10 11:37:25 | 只看该作者
    类似问题,求各位大侠帮忙下;谢谢!

    用QTP获取name123456这个对象时,对象的Name为name123456,innertext为王明,html tag为span,类型为WebElement
    由于脚本录制是,页面中获取的innertext=“王明”,但在运行时这个字段值是随机动态变化的,如“王红”;
    用如下脚本,永远只能得到“王明”;
    Browser("title:=a").Page("title:=a").WebElement("name123456").GetROProperty("innertext")               
    请教,这种情况怎么处理;非常感谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2016-3-30 10:09:39 | 只看该作者
    对象库innertext:=总记录数:161 条  修改成总记录数:\\d 条 不能识别对象   
    等答复 谢谢

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-12 04:50 , Processed in 0.071130 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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