Вопрос

Я пытаюсь определить шаг для проверки значения 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] 

Установите вещи к стоимости, если у вас есть более сложные тесты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top