Как проверить изображение src и значение alt с помощью capybara?
Я пытаюсь записать тестовое значение alt text + src изображения с помощью capybara и селекторов css.
любая идея s для проверки как в одиночном xpath?
Ответы
Ответ 1
Несколько проще будет использовать идентификатор для этого изображения:
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/)
Ответ 2
Вы можете проверить несколько атрибутов с помощью xpath
assert page.has_xpath("//image[@alt='some_value' and @src = 'some_value']")
Ответ 3
variable=find(:xpath, "//img[@class='class_name']")
variable['src'].should == "url"
variable['alt'].should == "text"
Ответ 4
У меня были некоторые проблемы, потому что src моего изображения имел некоторые динамические значения, поэтому я сделал это:
find(locator+' img')['src'].include?(img_src).should be_true
Мне действительно не нравится этот путь, только если имя файла было правильным
Ответ 5
Он не отвечает напрямую на ваш вопрос, но если некоторые люди считают, что легкость отладки превышает скорость, я бы предложил использовать этот синтаксис:
find(:xpath, "//img[@class='avatar']/@src").text.should match /some url/
find(:xpath, "//img[@class='avatar']/@alt").text.should match /some text/
поскольку ошибка будет более явной, если она терпит неудачу. (он фактически отобразит значение src
и alt
).
Ответ 6
-
Should
немного устарел. Expect
- новый синтаксис ожидания RSpec.
- Разделение ожиданий в их собственных спецификациях - хорошая практика.
- Личные предпочтения: я избегаю
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