我可以通过 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
等等
我可以通过 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
等等
如果你知道元素的类型,你可以写:
find('p', text: 'text in paragraph')
find('a', text: 'text in link')
find('button', text: 'text in button')
所有人都可能会回答这个问题
desired_element = nil
all('p').each do |elem|
if elem.text == 'Copy from a paragraph'
desired_element = elem
end
end
根据需要将 'p' 替换为 'a' 或 'input'。
希望这可以帮助
我不相信有你喜欢的解决方案。考虑这个 HTML:
<div>
<p>
<span>hello</span>
</p>
</div>
所有这三个元素都“包含”文本hello
。每个包含元素(body
,html
等)都会匹配。也许您可以帮助我们了解您为什么要这样做?
找到了一个非常相似的问题的答案,关于如何在不指定其类型的情况下查找元素,它现在对我有用。就我而言,我首先定义了一个父选择器,然后仅通过文本在此选择器中查找一个元素。
答案不是最终的,但它有效。这一步所需要做的就是比使用正则表达式更好地处理完全匹配。
search = find(:css, #{parent_selector}).find(:css, '*', :text => /\A#{element_text}\z/)