8

CapybaraセレクターとCSSセレクターを使用して、画像の代替テキストの値をテストするステップを定義しようとしています。

readmeの例に基づいて入力値用に1つ作成しました。

Then /^I should see a value of "([^\"]*)" within the "([^\"]*)" input$/ do |input_value, input_id|
  element_value = locate("input##{input_id}").value
  element_value.should == input_value
end

しかし、私はこれを理解することはできません...次のようなもの:

Then /^I should see the alttext "([^\"]*)"$/ do | alt_text |
  element_value = locate("img[alt]").value
end

代替テキスト値を見つける方法を知っている人はいますか?

4

4 に答える 4

12

Capybaraはデフォルトでxpathを使用するため、その設定を変更しない限り、それが問題の一部である可能性があります。(を使用できますlocate(:css, "img[alt]"))。

xpathを使用してテストを記述し、次のようにします。

Then /^I should see the alt text "([^\"]*)"$/ do | alt_text |
    page.should have_xpath("//img[@alt=#{alt_text}]")
end

Then /^I should see a value of "([^\"])" within the "([^\"])" input$/ do |input_value, input_id|
    page.should have_xpath("//input[@id=#{input_id} and text()=#{input_value}]
end
于 2010-05-17T16:09:49.363 に答える
10

このvalueメソッドは入力フィールドの値を返し、属性のテストには使用できないと思います。

代わりに、このようなものが機能する可能性があります。

page.should have_css("img[alt=the_alt_text_you_are_expecting]")
于 2010-05-15T06:27:38.133 に答える
7

テーマの別のバリエーション:

Then /^I should see the image alt "([^"]*)"$/ do |alt_text|
  page.should have_css('img', :alt => alt_text)
end
于 2011-06-11T01:55:58.593 に答える
0

画像を見つけるために使用している方法がわかりませんが、これは私にとってはうまくいきます。

expect(find_by_id("image-1")[:alt]).to have_content('tree')

要素[:"tag"]を取得すると、は値を提供します。

$thing = find_by_id("image-1")[:alt] 

より複雑なテストがある場合は、値に設定されます。

于 2013-06-14T15:34:43.273 に答える