Capybara按内容查找元素

时间:2013-11-13 12:32:56

标签: capybara

我可以通过Capybara的内容找到(任何类型的)元素吗?

理想情况下,我想编写这样的代码:

find('Copy from a paragraph')    # finds the p element
find('Copy from a link')         # finds a element
find('Copy from a button')       # finds button element

4 个答案:

答案 0 :(得分:3)

如果你知道元素的类型,你可以写:

find('p', text: 'text in paragraph')
find('a', text: 'text in link')
find('button', text: 'text in button')

答案 1 :(得分:1)

所有人都可以回答这个问题

desired_element = nil
all('p').each do |elem|
  if elem.text == 'Copy from a paragraph'
    desired_element = elem
  end
end

根据需要将'p'替换为'a'或'input'。

希望这有帮助

答案 2 :(得分:1)

我不相信你喜欢的解决方案。考虑一下这个HTML:

<div>
  <p>
    <span>hello</span>
  </p>
</div>

所有这三个元素都“包含”文字hello。每个包含元素(bodyhtml等)都匹配。也许你可以帮助我们理解你为什么要这样做?

答案 3 :(得分:1)

找到一个关于如何在不指定其类型的情况下找到元素的非常相似的问题的答案,它现在适用于我。在我的例子中,我首先定义一个父选择器,然后在文本选择器中找到一个元素。

答案不是最终的,但它确实有效。这一步所需要的只是处理完全匹配比使用正则表达式更好。

New Cons()