0

キュウリとルビーでカピバラを使用しています

env.rb
Capybara.current_driver = :selenium

私は多くの言語で Web サイトを運営しており、次の要素を検証したいと考えています。この要素には 100 文字以上のテキストが含まれている必要があります。それ以外の場合はメッセージを表示します

<p id="user_text">sometext</p>

「user_text」のテキストはどの言語でもかまいません。

(("#user_text").text.length > 99) == true

Element.should have_content?("text") won't work because I don't know the text in "user_text"

上記の方法は機能せず、常にパスします。

テキストの長さを確認し、失敗した場合にメッセージを出力するにはどうすればよいですか?

どんな答えでも大歓迎です。

4

1 に答える 1

1

明確にするだけです:

呼び出しElement.shouldているときは、実際にはRSpec 述語 matchersを使用しているため、次のようになります。

Element.should have_content?("text")

実際には次のように呼び出します:

Element.has_content?("text")

同じことを行いますが、2 番目の例ではCapybara node matcherを使用しています。

あなたの質問に戻ります

テストで他のRSpec マッチャーを使用することもできます。Capybara は Nokogiri を使用するため、Element は実際にはNokogiri::XML::Nodeです。したがって、このメソッドを使用textしてコンテンツにアクセスし、次のように検証できます。

Element.text.should match(/^.{99,}$/)

これはあなたが必要とすることをするはずです。確認したい内容に応じてtextまたはinner_htmlメソッドを使用できます。

于 2012-12-05T11:03:37.523 に答える