Как проверить альт-значение изображения с помощью капибары? - PullRequest
7 голосов
/ 15 мая 2010

Я пытаюсь определить шаг для проверки значения альтернативного текста изображения с помощью селекторов Capybara и CSS.

Я написал один для входных значений на основе примеров readme:

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 ]

12 голосов
/ 17 мая 2010

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
10 голосов
/ 15 мая 2010

Я считаю, что метод value возвращает значение полей ввода и не может использоваться для проверки атрибута.

Вместо этого может работать что-то подобное:

page.should have_css("img[alt=the_alt_text_you_are_expecting]")
7 голосов
/ 11 июня 2011

еще одна вариация на тему:

Then /^I should see the image alt "([^"]*)"$/ do |alt_text|
  page.should have_css('img', :alt => alt_text)
end
0 голосов
/ 14 июня 2013

Я не уверен насчет метода, который вы используете, чтобы найти изображение, но мне это подходит:

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

Если у вас есть элемент, [:"tag"] даст вам значение.

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

установит значение на значение, если у вас более сложные тесты.

...