3

スパン内にあり、次のようなエラーメッセージの内容を印刷したいと思います。

<span>Es exisitiert bereits ein Account mit dieser E-Mail Adresse. Wenn Sie sich sicher sind, dass dies Ihre Adresse ist, dann klicken Sie <a href="https://link-removed.com">hier</a> um das Passwort und den Zugang zu Ihrem Account zu erhalten.</span>

私のステップ定義では、次のことを試しました

print page.find('.error-msg span')

ただし、これは実際には機能しません。1時間グーグルした後、うまくいくものが見つかりませんでした。これは、私がこれらすべてにかなり慣れていないという事実も原因である可能性があります。

基本的にデバッグしたいので、実際の内容を確認したいです。また、将来の取り組みにも役立ちます。

4

4 に答える 4

6

あなたはtextそれに反対することができます。

puts page.find('.error-msg span').text

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element

于 2013-02-25T14:51:29.303 に答える
0

バグを成功または失敗させるには、rspecマッチャーを使用する必要があります。これを行うと、ページに役立つメッセージが出力されます。

Given I visit a page
Then I should see "foo" in ".error-msg span"

Then /^I should see "([^\"]*)" in "([^\"]*)"$/ do |text, css|
  page.should have_selector(tag, text: text )
end

これを使用し、ページに「.error-msg span」要素があり、テキストが期待したものと一致しない場合、Capybaraが表示するエラーメッセージは、セレクター内に何があったかを示します。例:

      expected to find css ".error-msg span" with text "foo" but there were no matches. Also found "Bar", which matched the selector but not all filte

rs。(カピバラ:: ExpectationNotMet)

翻訳:「。error-msgspan」内のテキストは「foo」ではなく「bar」でした

于 2013-02-25T15:44:31.187 に答える
0

必要なのはそのスパンのテキストを確認することだけなので、これも使用できます。

Then /^I should see (.+) as content in xpath "([^"]*)"$/ do |content, xpath|
  assert page.find(:xpath, xpath + "[contains(string(), '" + content +"')]")
end

スパンのxpathを指定します。文字列でのみ機能します

于 2013-02-26T07:09:09.033 に答える
0

このアプローチを試すことができます。ファイルelements.rbをサポートフォルダーに追加し、その中にこれを含めます。

 def text(type=nil)
    type ||= :all unless Capybara.ignore_hidden_elements or Capybara.visible_text_only
   synchronize do
  if type == :all
     base.all_text
  else
      base.visible_text
  end
 end
end

次に、ステップ定義を次のように記述します(例)。

within(:id, "") do 
    page.should have_content("")
         puts text
    end
end

puts text将来、任意のステップ定義の最後に追加して、要素テキストを出力できます。

于 2015-05-11T11:49:59.383 に答える