许多具有相同ID的按钮

时间:2013-09-10 12:29:33

标签: selenium liferay selenium-webdriver

我正在使用selenium来测试一个由liferay制作的多个portlet的页面。

每个portlet都有一个具有相同id的保存按钮,它使用portlet的iframe id来区分按钮。

如何在selenium中编写一个能够理解我的意思的按钮?

3 个答案:

答案 0 :(得分:2)

您需要使用driver.switchTo().frame(IFrameElement)。您需要切换进/出的任何类型的IFrame。

https://stackoverflow.com/a/9943605/1769273

答案 1 :(得分:0)

您可以使用xpath或css选择器查​​找依赖父母的孩子。

粘贴您的html,我们可以提供示例

答案 2 :(得分:0)

这是否意味着您的portlet都嵌入了iframe?通常,portlet只会将HTML片段呈现到相同的文档中。在这种情况下,您的实现将被视为存在缺陷:Portlet不得使用可能冲突的ID。例如。你不应该渲染

 <input type="submit" id="save"/>

但是

 <input type="submit" id="<portlet:namespace/>save"/>

或类似 - 确保id是唯一的,因为它最终在同一个HTML-DOM中 - 按照规范 - 假设id是唯一的。

还有其他方法可以创建唯一ID,但请记住:如果您自己提出前缀,每个portlet,有人可能会将相同的portlet添加到页面两次,即使尽管如此,您仍可以使用相同的ID所有不同的 portlet都有唯一的ID。

如果您确实从portlet中渲染了许多不同的iframe,则可以忽略此答案或将其作为建议,通过更改实现来更好地利用门户环境。