51Testing软件测试论坛

标题: selenium测试B/S系统,可是此系统ID都是自动随机生成,怎么确定元素 [打印本页]

作者: Q侧耳听花开    时间: 2011-3-14 15:25
标题: selenium测试B/S系统,可是此系统ID都是自动随机生成,怎么确定元素
selenium测试B/S系统,可是此系统ID都是自动随机生成,怎么确定元素

有共同研究的加QQ:379323216
作者: robin.von    时间: 2011-3-14 15:37
如果父结点能确定的话,可以用父结点来定位。

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

实在没有的话,就用序号来定位。
作者: Q侧耳听花开    时间: 2011-3-17 14:51
父结点不能确定,id都是随机的,class倒是一组相同,style怎么定位,这三个能不能实例一下?
作者: robin.von    时间: 2011-3-17 15:31
偶一个项目中弹出的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]中,一一枚举,然后实例化成对象就可以操作了。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2