51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4242|回复: 6
打印 上一主题 下一主题

[求助] 如何处理版本更新后对象html id属性发生变化导致对象库不识别的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-16 14:56:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10测试积点
如何处理版本更新后对象html id属性发生变化导致对象库不识别的问题
问题原因:Web测试中,对象库中很多对象都是采用html id属性来识别的,但是版本更新后对象的html id属性发生了改变,导致对象库不识别了,脚本无法运行

[ 本帖最后由 nimcok 于 2010-7-16 16:51 编辑 ]

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

使用道具 举报

该用户从未签到

2#
发表于 2010-7-16 17:16:40 | 只看该作者
一个是通过id规则遍历
在一个你可以通过文字来遍历,比如用户名输入框前的"用户名"文字.找到文字后,再找后边的输入框,用DOM来处理,总之没有解决不了的
另外不建议用对象库了.因为ID是变化的
回复

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-7-19 16:29:35 | 只看该作者
原帖由 wugecat 于 2010-7-16 17:16 发表
一个是通过id规则遍历
在一个你可以通过文字来遍历,比如用户名输入框前的"用户名"文字.找到文字后,再找后边的输入框,用DOM来处理,总之没有解决不了的
另外不建议用对象库了.因为ID是变化的


我当前可以通过下面办法解决:先得到可以通过其它属性(比如文字)识别的对象A的id,然后根据这个id计算出所要操作对象B的id,然后对所要操作的对象B进行id赋值,然后在对B进行操作,这样对于可以找到计算id方法的元素可以解决(同时需要存在可以通过其它属性识别的对象,比如A),但是如果找不到计算id的规则或找不到可以参照的对象(A)时,则我使用的这种方法可能就失效了,当然对于一些对象也可以通过正则表达式来处理,但是可以通过正则表达式来处理的很少
虽然我目前遇到的问题解决了,但是继续悬赏,希望得到更好的方法
楼上说的id规则遍历,怎么个遍历?可以详细说一下吗,没理解你说的意思。
另外可以说说DOM方法吗?
回复

使用道具 举报

该用户从未签到

4#
发表于 2010-7-19 16:58:00 | 只看该作者
和你说的差不多了,比如一个动态的frame窗口id是iframe_34253462(后面的数字是随机的).那么你就可以通过document.getElementsBytagname("iframe")找到所有iframe,然后在循环判断iframe的id如果前面几位是"iframe_"那么就可以定位到这个iframe..比如
set objects=Browser(XXX:=XXX).page(XX:=XXX).object.getElementsBytagname("iframe")
for i=0 to objects.length-1
if (left(objects(i).id,7)="frame_")then
set obj=objects(i)
end if
next
具体的方法google一下就可以了,很简单的

[ 本帖最后由 wugecat 于 2010-7-19 16:59 编辑 ]
回复

使用道具 举报

该用户从未签到

5#
发表于 2010-7-19 20:26:50 | 只看该作者
如果id变化是有规律的或者格式是固定的,可以考虑用正则表达式匹配掉动态变化的部分,例如iframe_.*
回复

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-7-20 09:11:38 | 只看该作者
原帖由 TIB 于 2010-7-19 20:26 发表
如果id变化是有规律的或者格式是固定的,可以考虑用正则表达式匹配掉动态变化的部分,例如iframe_.*

楼上两位说的这样处理我都知道,或许是我没有说清楚,问题是:但是如果找不到计算id的规则或找不到可以参照的对象(A),也不能使用正则表达式处理时,怎么识别?
比如webelement的id为iframe_535,这个页面上还有其它很多webelement,他们的id都是类似于"iframe_538,iframe_542"这种,每更新一次版本时,后面三位数都是随机办法的,这个时候怎么处理的?
当前我是通过id值之间的关系来动态计算它们的具体id值,然后通过setToproperty赋值id,再对这个对象执行操作,能用正则表达式的话那样就太简单了,不是我想看到的结果
回复

使用道具 举报

该用户从未签到

7#
发表于 2010-7-20 09:30:07 | 只看该作者
用文字来判断,查找某个中文旁边或者前面的对象,再不行就用对象在页面的结构来查找,如果真如你所说找不到任何规律,所有都是动态的,包括甚至连结构都不确定......我想不会有这样的系统出现吧
回复

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-20 05:57 , Processed in 0.075616 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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