0

一部のコンテンツに HTML が含まれていないかどうかをテストしたいと考えています。そうするための簡単できれいな方法は何ですか?

page.find(".description").should_not have_content /\<.*\>/

&lt;strong&gt;Lorem失敗するが通過するため、正しく動作しません<strong>Lorem。おそらく、カピバラがユーザーの HTML のエスケープを支援する方法が原因です。

xpaths で解決できますが、もっと簡単な解決策がないのではないかと思います。

page.should_not have_selector(:xpath, "//div[@class="description"]/*")

Capybaraで一部のテキストがHTMLから削除されたかどうかを検出する組み込みの方法はありますか?

4

1 に答える 1

0

Capybara のhas_content?(したがってhave_content) メソッドは、期待どおりの要素の html ソース内のテキストではなく、ユーザーにレンダリングされたテキストを検査することを目的としています。

したがって、カピバラの動作は正しいと思います。

  • の html ソースが の場合.description&lt;strong&gt;Loremユーザーには が表示されます<strong>Lorem。カピバラはこのテキストを検索し/\<.*\>/て見つけます。
  • の html ソースが の場合.description<strong>Loremユーザーには が表示されますLorem。カピバラはこのテキストを検索しますが/\<.*\>/、見つかりません。

要素のソース html を調べたい場合は、javascript の関数を使用できますinnerHTML

source_text = page.evaluate_script("document.querySelector('.description').innerHTML")
source_text.should_not =~ /\<.*\>/
于 2013-03-21T21:54:56.150 に答える