在页面对象文件中:
class ThisPage
include PageObject
我可以建立这样一个对象:
div(:user_dialog, :class => 'ud_dialog')
然而,在网站的域中,有许多带有:class => 'ud_dialog'
的窗口在各种工作流中弹出。
我可以在绑定中找到对象。像这样撬:
on(ThisPage).div_elements(:text => 'Are you sure you want to do this action?').first.parent.html
如何在页面文件中建立这样的窗口?
也就是说,有这样的语法吗:
div(:user_dialog, parent(:text => 'Are you sure you want to do this action?'))
对于复杂的定位器,例如定位父元素,可以使用块来获取元素。
如果您将页面对象中的div定义为:
div(:user_dialog){
div_elements(:text => 'Are you sure you want to do this action?').first.parent
}
然后你的页面可以做:
on(ThisPage).user_dialog_element.html
注意,由于您想要第一个匹配的div,您可以将其简化为:
div(:user_dialog){
div_element(:text => 'Are you sure you want to do this action?').parent
}
通过使用多个定位器(取决于html是什么),也可能更直接。您可以找到具有ud_dialog类并包含指定文本的div(部分匹配,因为可能还有其他文本):
div(:user_dialog, :class => 'ud_dialog',
:text => /Are you sure you want to do this action?/)