Как проверить значение src и alt изображения с помощью капибары? - PullRequest
18 голосов
/ 25 июня 2011

Я пытаюсь написать test значение alt text + src изображения, используя capybara и селекторы css.

есть идеи проверить оба в одном xpath?

Ответы [ 6 ]

31 голосов
/ 23 июня 2013

Несколько проще будет использовать идентификатор для этого изображения:

page.find('#profile-avatar')['src'].should have_content 'default.png'

Обновлено для rspec 3:

expect(page.find('#profile-avatar')['src']).to have_content 'default.png' expect(page.find('#profile-avatar')['alt']).to match(/some-value/)

6 голосов
/ 27 июня 2013
variable=find(:xpath, "//img[@class='class_name']")
variable['src'].should == "url"
variable['alt'].should == "text"
6 голосов
/ 25 июня 2011

Вы можете проверить несколько атрибутов, используя xpath

assert page.has_xpath("//img[@src = 'some_value' and @alt='some_value']")
2 голосов
/ 18 апреля 2017
  1. Should немного устарело.Expect - это новый синтаксис ожиданий RSpec.
  2. Разделение ожиданий в их собственных спецификациях является хорошей практикой.
  3. Личные предпочтения: я стараюсь избегать have_content в максимально возможной степени, поскольку он не совсем проверяетЗначение атрибута, который я хочу и просто выполняет HaveText(*args).Это может вызвать ложные срабатывания.

before(:all) do
  @avatar_image = find('#profile-avatar')
end

it 'has correct src' do
  expect(@avatar_image[:src]).to eq("some_url")
end

it 'has correct alt text' do
  expect(@avatar_image[:alt]).to eq("some_text")
end
1 голос
/ 22 февраля 2013

Он не дает прямого ответа на ваш вопрос, но если некоторые люди хотят отладки по быстродействию, я бы предложил использовать следующий синтаксис:

find(:xpath, "//img[@class='avatar']/@src").text.should match /some url/
find(:xpath, "//img[@class='avatar']/@alt").text.should match /some text/

, поскольку ошибка будет более явной, если она не будет выполнена. (на самом деле будет отображаться значение src и alt).

1 голос
/ 01 сентября 2012

У меня были некоторые проблемы, потому что у моего изображения были некоторые динамические значения, поэтому я сделал это:

find(locator+' img')['src'].include?(img_src).should be_true

Меня не волнует путь, только если имя файла было правильным

...