在页面对象文件中:
class ThisPage
include PageObject
我可以建立一个像这样的对象:
div(:user_dialog, :class => 'ud_dialog')
但是,在网站的域中,有许多窗口:class => 'ud_dialog'
可以在各种工作流程中弹出。
我可以像 binding.pry 那样找到对象:
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?'))
答案 0 :(得分:2)
对于复杂定位器,例如定位父元素,您可以使用块来获取元素。
如果您将页面对象中的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?/)