我正在尝试使用capybara和css选择器来测试图像的alt text + src的值。
任何想法在单个xpath中进行测试?
答案 0 :(得分:31)
一种稍微简单的方法是为该图像使用id:
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/)
答案 1 :(得分:6)
您可以使用xpath
检查多个属性assert page.has_xpath("//img[@src = 'some_value' and @alt='some_value']")
答案 2 :(得分:6)
variable=find(:xpath, "//img[@class='class_name']")
variable['src'].should == "url"
variable['alt'].should == "text"
答案 3 :(得分:2)
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
答案 4 :(得分:1)
我遇到了一些麻烦,因为我的图片的src有一些动态值,所以我这样做了:
find(locator+' img')['src'].include?(img_src).should be_true
我并不关心路径,只是文件名是正确的
答案 5 :(得分:1)
它没有直接回答你的问题,但是如果有些人喜欢轻松调试速度,我建议使用这种语法:
find(:xpath, "//img[@class='avatar']/@src").text.should match /some url/
find(:xpath, "//img[@class='avatar']/@alt").text.should match /some text/
如果失败,错误会更明确。 (它实际上会显示src
和alt
)的值。