51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2518|回复: 3
打印 上一主题 下一主题

selenium测试B/S系统,可是此系统ID都是自动随机生成,怎么确定元素

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-3-14 15:25:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
selenium测试B/S系统,可是此系统ID都是自动随机生成,怎么确定元素

有共同研究的加QQ:379323216
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-3-14 15:37:10 | 只看该作者
如果父结点能确定的话,可以用父结点来定位。

如果class,style这些属性中包含唯一属性的话,也可以用来定位,

实在没有的话,就用序号来定位。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-3-17 14:51:42 | 只看该作者
父结点不能确定,id都是随机的,class倒是一组相同,style怎么定位,这三个能不能实例一下?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2011-3-17 15:31:16 | 只看该作者
偶一个项目中弹出的DIV都是在最上层,其他属性都无法定位,就用了STYLE定位。
具体方法先找元素://div[contains(@style,'z-index:') and not(contains(@style,'display: none'))]
然后把z-index枚举出来,值最大的那个就是最上层的。

另一个项目中,所有的属性都无法用来唯一定位,就是用的序号去定位的。
算法差不多是这样的,先定位到这个元素的能定位到的祖先结点,然后根据祖先结点加上需要定位的结点名字,再加上序号去枚举出所有的结点,然后再把枚举出的结点做成对象实例化。

比如某个祖先结点为 //div[@id='id1'],要定位的div是其某个子孙结点,所有这类子孙结点都有个CLASS为CLASS1,则我所需要的结点一定在//div[@id='id1']//div[contains(@class,'class1')]这个XPATH中,得到所有的结点数X,则所有结点可通过//div[@id='id1']//div[contains(@class,'class1')][0]......//div[@id='id1']//div[contains(@class,'class1')][X]中,一一枚举,然后实例化成对象就可以操作了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 13:15 , Processed in 0.069416 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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