如何使用capybara测试图像src和alt值?

时间:2011-06-25 09:50:44

标签: ruby-on-rails capybara

我正在尝试使用capybara和css选择器来测试图像的alt text + src的值。

任何想法在单个xpath中进行测试?

6 个答案:

答案 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)

  1. Should有点过时了。 Expect是RSpec的新期望语法。
  2. 在他们自己的规范中分离期望是一种良好的做法。
  3. 个人偏好:我尽可能避免使用have_content,因为它并没有完全验证我想要的属性的值,只是执行HaveText(*args)。它可能导致误报。
  4. 
    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/

如果失败,错误会更明确。 (它实际上会显示srcalt)的值。