2

我正在尝试将 Cheezy 的页面对象 gem 用于所有内容以保持一致。但是我一直无法找到如何深入到这样的元素。这里的情况是,会有多个链接具有所有相同的标签,因此您必须从可识别的内容向下钻取。

@browser.p(:text => /#{app_name}/i).link(:text => 'Add').click

我正在寻找的代码将类似于单击位于段落内的链接,但它不起作用。

p(:pgraph, id: => 'some-pgraph')
link(:lnk, text: => 'add')    

self.pgraph.lnk

有没有办法用页面对象做到这一点?

谢谢,亚当

4

1 回答 1

5

您可以使用块来定义具有更复杂定位策略的访问器。

如果您还想保留对该段落的引用:

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
于 2013-12-06T16:25:01.863 回答