Как я могу проверить изображение ALT, используя Capybara?
-
26-09-2019 - |
Вопрос
Я пытаюсь определить шаг для проверки значения Alt Text из изображения с использованием селекторов 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
Кто-нибудь знает, как я могу найти текстовое значение Alt?
Решение
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
Другие советы
Я верю value
Метод возвращает значение полей ввода и не может использоваться для проверки атрибута.
Что-то вроде этого может работать вместо этого:
page.should have_css("img[alt=the_alt_text_you_are_expecting]")
Еще одно изменение темы:
Then /^I should see the image alt "([^"]*)"$/ do |alt_text|
page.should have_css('img', :alt => alt_text)
end
Я не уверен в методе, который вы используете, чтобы найти изображение, но это работает для меня:
expect(find_by_id("image-1")[:alt]).to have_content('tree')
Как только у вас есть элемент [:"tag"]
даст вам ценность.
$thing = find_by_id("image-1")[:alt]
Установите вещи к стоимости, если у вас есть более сложные тесты.