我正在尝试使用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
任何人都知道如何找到替代文字值?
答案 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]
如果你有更复杂的测试,会将东西设置为值。