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