如何使用水豚测试图像alt值?

时间:2010-05-14 22:48:02

标签: ruby-on-rails testing cucumber webrat capybara

我正在尝试使用Capybara和CSS选择器定义测试图像alt文本值的步骤。

我根据自述文件示例编写了一个输入值:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:10)

我相信value方法返回输入字段的值,不能用于测试属性。

这样的事情可能会起作用:

page.should have_css("img[alt=the_alt_text_you_are_expecting]")

答案 2 :(得分:7)

主题的另一个变体:

Then /^I should see the image alt "([^"]*)"$/ do |alt_text|
  page.should have_css('img', :alt => alt_text)
end

答案 3 :(得分:0)

我不确定您用于查找图像的方法,但这对我有用:

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

获得元素后,[:"tag"]会为您提供值。

$thing = find_by_id("image-1")[:alt] 
如果你有更复杂的测试,

会将东西设置为值。