51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3104|回复: 16
打印 上一主题 下一主题

[原创] 描述性编程多个属性时不生效

[复制链接]
  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2009-4-21 17:51:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    B/S程序表格页面,需要取某条特定的记录,找不到唯一属性,所以就用了多个innertext的值来定位那条记录
    但奇怪的是我用一个调试没问题,能找出正确记录条数,而多个innertext反而不能定位到正确的记录了.
    调试
    Set mydescription=Description.Create()
    mydescription("innertext").value="PD200904000008"
    mydescription("innertext").value="010602-004"
    Set ud=Browser("Openurl:=.*main.jsp.*").Page("url:=.*main.jsp.*").Frame("html id:=frmdata").ChildObjects(mydescription)
    Dim n
    n=ud.count  此时n=1

    但属性用一下三个
    mydescription("innertext").value="PD200904000008"
    mydescription("innertext").value="010602-004"
    mydescription("innertext").value="三相转换开关"
    调试时,n=3 ,明显不正确

    但弄不清楚是为什么
    页面图如下

    本帖子中包含更多资源

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

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

    使用道具 举报

    该用户从未签到

    2#
    发表于 2009-4-21 17:57:08 | 只看该作者
    个人觉得你想描述区域是文本, 而不是一个对象, 所以你想用描述性编程去找到它是比较困难的.
    建议你用WebTable的方法(去帮助中找),  用方法getcelldata去匹配, 里面有很多方法, 可以花时间看下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    3#
     楼主| 发表于 2009-4-21 18:17:10 | 只看该作者
    其实我的目的是要找到WebTable记录中,有三个字段的值符合我给的条件的那条记录,然后选中打开.
    按照lhd85的思路我看了下WebTable的方法,假如用getcelldata去匹配,是不是用指定列每个字段去匹配下条件,记录下复核条件的行,三个条件都符合的行应该只有一个.这个匹配过程怎么写循环好点了?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2009-4-21 22:57:35 | 只看该作者
    调试了下,发觉两个属性时,这两个属性值都在当前页面
    当使用三个属性值时,第三个值需要拖动滚动条才能看到该值,此时前面两个值没有生效,只查找了第三个值

    试了下WebTable的属性及方法,是应该能检索到的,但循环太多了。
    最好直接用页面的查询功能查找出需要的数据

    大家还有什么建议了,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2009-4-22 10:28:51 | 只看该作者
    别想着有一步完成的方法, 老老实实用getrowwithcelltext, rowcount, getcelldata和do-while做个嵌套循环
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    6#
     楼主| 发表于 2009-4-22 11:03:14 | 只看该作者
    多谢lhd85,原来webtable还有getrowwithcelltext方法的,有这个又方便了一些
    看那个chm的帮助文档没发觉
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2009-4-22 13:04:25 | 只看该作者
    mydescription("innertext").value="PD200904000008"
    mydescription("innertext").value="010602-004"
    mydescription("innertext").value="三相转换开关"

    我怎么觉得这个赋值就不正确呢?起作用的肯定是最后一句,而不是3句,因为一个对象的"innertext"应该是一个值的,建议lz用 index试试,或者spy看下你要查找的对象还有什么特殊的属性
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    8#
     楼主| 发表于 2009-4-22 14:01:31 | 只看该作者
    谢谢风雪夜归人的指正,你说的是正确的,只有最后一句有效.以前调试结果的偶然性导致我有这个误区.
    另外,没发觉有什么属性可以用了,毕竟是三个字段才能确定记录唯一性,目前就直到lhd85提的在webtable中查找了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2009-4-22 14:15:22 | 只看该作者
    如果这纪录是固定位置的,就用 ("index:=xxx")来识别
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    10#
     楼主| 发表于 2009-4-22 14:32:35 | 只看该作者
    页面的记录是别的功能流过来的,所以位置不确定,在别的功能存了三个参数,通过参数查找到需要的记录
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2009-4-22 15:04:47 | 只看该作者
    我想到一种方法,就是使用object方法,建议你spy 一下,然后点"run-time object properties",里面的参数看下嘛,我一般没有办法的时侯就找这些东西,不确定能不能找到,但至少多一种思路,以后遇到别的问题也可以往这方面思考嘛, 其实直接循环查找是最方便的,如果描述不了的话
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    12#
     楼主| 发表于 2009-4-22 15:22:27 | 只看该作者
    多谢,不过我还没用过object方法,现在还不会.时间紧就没有继续去研究,也许以后知识多了就自然有新的方法了
    我有空再来看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2009-4-22 16:35:00 | 只看该作者
    原帖由 virgolong 于 2009-4-21 22:57 发表
    调试了下,发觉两个属性时,这两个属性值都在当前页面
    当使用三个属性值时,第三个值需要拖动滚动条才能看到该值,此时前面两个值没有生效,只查找了第三个值

    试了下WebTable的属性及方法,是应该能检索到的,但 ...


    循环不多啊,一重循环就可以了,逻辑如下
    先取到这些子元素的上一级WebTable对象(若有多层WebTable一定要确认是否取对),取到WebTable.RowCount,然后从第二行开始循环到RowCount,循环中用GetCellData(row, column)来取值判断,第X列的值="" and 第Y列的值="" and 第Z列的值="",如果为True那就返回当前的Row同时退出循环。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2009-4-22 16:42:31 | 只看该作者
    如果你只是要取到这条记录,也可以正则表达式匹配下,比如
    Browser("Openurl:=.*main.jsp.*").Page("url:=.*main.jsp.*").Frame("html id:=frmdata").WebElement("innertext:=.*PD200904000008.*010602-004.*三相转换开关.*").XXX
    当然可能符合条件的有多个,有可能要根据实际情况加个index
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-9-22 15:26
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]测试营长

    15#
     楼主| 发表于 2009-4-22 17:12:27 | 只看该作者
    谢谢hsjzfling,在WebTable中循环时没想到直接用and,照你这么写的确好简单

    然后用正则表达式那种写法,试了下不行,调试发现innertext取的值是页面所有文字信息组合连成的字符串
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2009-4-23 17:14:20 | 只看该作者
    不知道,你的这个List有没有分页。如果要在多页里来查找的话,那就麻烦了点,得多些几行代码。
    不是脚本不好写。而是QTP有个问题,解决不了。
    我用的是9.2。在网上也查到了其他人也遇到过,但是一直没有找到原因。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2009-4-23 17:16:25 | 只看该作者
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 19:50 , Processed in 0.097860 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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