【发布时间】:2013-02-16 06:38:11
【问题描述】:
我想用 Selenium 测试 Liferay portlet,但问题是 Liferay 生成的元素 id 是动态的,而且似乎每次我进入 portlet 时它们都会改变。有人对我如何测试 portlet 有任何建议吗?
感谢您的帮助。
【问题讨论】:
-
我不确定 Liferay 如何在内部使用 Selenium 来测试 Liferay Portal。所以我知道这是可能的!
我想用 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>
然后用 selenium 抓取这个元素:
//div[@data-selenium-test='foo']
【讨论】: