为了保持一致,我正在尝试对所有内容使用Cheezy的页面对象gem。然而,我一直找不到如何深入到这样的元素。这里的情况是,会有多个链接具有所有相同的标签,因此您必须从可识别的内容中进行深入研究。
@browser.p(:text => /#{app_name}/i).link(:text => 'Add').click
我正在寻找的代码是这样的,点击位于段落内部的链接,但它不起作用。
p(:pgraph, id: => 'some-pgraph')
link(:lnk, text: => 'add')
self.pgraph.lnk
有没有一种方法可以对页面对象执行此操作?
谢谢,Adam
您可以使用块来定义具有更复杂定位策略的访问者。
如果你还想保留一段参考:
p(:pgraph, id: 'some-pgraph')
link(:lnk){ pgraph_element.link_element(text: 'add') }
或者,如果你不需要这段话来做其他事情,你可以这样做:
link(:lnk){ paragraph_element(id: 'some-pgraph').link_element(text: 'add') }
基本上,您可以使用带有嵌套元素的块来定义类似于在Watir中的访问器。
注意,如果你想在运行时动态指定id,你可以定义一个方法来点击链接,而不是使用访问者:
def click_link_in(paragraph_id)
paragraph_element(id: paragraph).link_element(text: 'add').click
end