我正在使用selenium来测试一个由liferay制作的多个portlet的页面。
每个portlet都有一个具有相同id的保存按钮,它使用portlet的iframe id来区分按钮。
如何在selenium中编写一个能够理解我的意思的按钮?
答案 0 :(得分:2)
您需要使用driver.switchTo().frame(IFrameElement)
。您需要切换进/出的任何类型的IFrame。
答案 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,则可以忽略此答案或将其作为建议,通过更改实现来更好地利用门户环境。