Я пытаюсь написать тест значения альтернативного текста + src изображения, используя капибару и селекторы css.
есть идеи протестировать оба в одном xpath?
Я пытаюсь написать тест значения альтернативного текста + src изображения, используя капибару и селекторы css.
есть идеи протестировать оба в одном xpath?
Чуть более простым способом будет использование идентификатора для этого изображения:
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/)
Вы можете проверить несколько атрибутов, используя xpath
assert page.has_xpath("//img[@src = 'some_value' and @alt='some_value']")
assert page.has_xpath?("//img[@alt='some_value' and @src = 'some_value']")
- person João Paulo Motta; 13.03.2015
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
У меня были некоторые проблемы, потому что src моего изображения имел некоторые динамические значения, поэтому я сделал это:
find(locator+' img')['src'].include?(img_src).should be_true
Меня не волнует путь, просто если имя файла было правильным
Он не отвечает прямо на ваш вопрос, но если некоторым людям нравится отладка по скорости, я бы предложил использовать этот синтаксис:
find(:xpath, "//img[@class='avatar']/@src").text.should match /some url/
find(:xpath, "//img[@class='avatar']/@alt").text.should match /some text/
так как ошибка будет более явной в случае сбоя. (на самом деле он будет отображать значение src
и alt
).