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
等
誰もがこれに答えるかもしれません
desired_element = nil
all('p').each do |elem|
if elem.text == 'Copy from a paragraph'
desired_element = elem
end
end
必要に応じて「p」を「a」または「input」に置き換えます。
お役に立てれば
タイプを指定せずに要素を見つける方法について、非常によく似た質問に対する回答が見つかりました。私の場合、最初に親セレクターを定義してから、このセレクター内の要素をテキストのみで見つけます。
答えは最終的なものではありませんが、うまくいきます。このステップで必要なのは、正規表現を使用するよりも完全一致をうまく処理することだけです。
search = find(:css, #{parent_selector}).find(:css, '*', :text => /\A#{element_text}\z/)
あなたが好きな解決策があるとは思いません。次の HTML を検討してください。
<div>
<p>
<span>hello</span>
</p>
</div>
これら 3 つの要素はすべて、テキストを「含んでいます」hello
。すべての包含要素 ( body
、html
など) が一致します。なぜこれをしたいのかを理解するのを手伝ってもらえますか?