等待使用Capybara SitePrism加载图像

时间:2015-12-22 21:40:13

标签: ruby selenium-webdriver cucumber capybara site-prism

如何使用Capybara等待图像加载?这是我的应用代码:

-- <img src="data:image/jpeg.*" class="some class" alt="Image">

我尝试使用wait_for方法并使用classimg属性,但没有运气。它永远不会等待加载该图像。

1 个答案:

答案 0 :(得分:1)

img元素具有完整属性,指示图像是否已加载。因此,有些东西是

start = Time.now
while true
  break if find('img.some_class')['complete']
  if Time.now > start + 5.seconds
    fail "Image still not loaded"
  end
  sleep 0.1
end
假设img元素已经在页面上,

将等待最多5秒钟以完成加载。

这也可以作为自定义选择器实现,其中包含

Capybara.add_selector(:loaded_image) do
  css { |locator_class| "img.#{locator_class}" }
  filter(:loaded, default: true, boolean: true) { |node, value| not(value ^ node['complete']) }
end

然后可以被称为

find(:loaded_image, 'some_class')

***注意:我实际上没有尝试过自定义选择器代码,但它应足够接近以提供指导