使用 Capybara SitePrism 等待图像加载
Wait for an image to load using Capybara SitePrism
如何使用 Capybara 等待图像加载?这是我的应用程序代码:
-- <img src="data:image/jpeg.*" class="some class" alt="Image">
我曾尝试使用 wait_for
方法使用那些 class
和 img
属性,但没有成功。它从不等待该图像加载。
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')
*** 注意:我还没有真正尝试自定义选择器代码,但它应该足够接近以提供指导
如何使用 Capybara 等待图像加载?这是我的应用程序代码:
-- <img src="data:image/jpeg.*" class="some class" alt="Image">
我曾尝试使用 wait_for
方法使用那些 class
和 img
属性,但没有成功。它从不等待该图像加载。
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')
*** 注意:我还没有真正尝试自定义选择器代码,但它应该足够接近以提供指导