我想用Selenium测试一个Liferay portlet,但问题是Liferay生成的元素id是动态的,似乎每次进入portlet时它们都会改变。有没有人有任何建议我如何测试portlet?
感谢您的帮助。
答案 0 :(得分:2)
这取决于元素的结构。有多种方法可以识别元素,而不仅仅是固定的ID。
如果你有动态元素id,那么尝试使用元素的其他一些属性来唯一地标识元素,例如text()或name等...有时,也会发生使用常见模式生成id的情况,在这种情况下,您可以尝试使用它,例如,// div [contains(@ id,'fixedpart')] 或// div [starts-with(@ id,'fixedpart')]
答案 1 :(得分:0)
我建议使用像data- *这样的新HTML5属性,例如某个
<div data-selenium-test = "foo"></div>
然后用selenium抓住这个元素:
//div[@data-selenium-test='foo']