ruby - 使用 Capybara SitePrism 等待图像加载

标签 ruby selenium-webdriver cucumber capybara site-prism

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

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

我曾尝试使用那些 classimg 属性的 wait_for 方法,但没有成功。它从不等待该图像加载。

最佳答案

img 元素有一个 complete 属性,指示图像是否已加载。因此,一些类似的东西

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')

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

关于ruby - 使用 Capybara SitePrism 等待图像加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424872/

相关文章:

angular - 如何在 vagrant ubuntu-16.04 中使用 Protractor 运行 headless angular2 e2e 测试?

r - 使用 PhantomJS 在 RSelenium 中设置代理

ruby - Selenium Ruby 绑定(bind)功能文档

java - 是否有现成的可同时进行 cucumber 测试的基础设施?

intellij-idea - 在 IntelliJ 中使用 Cucumber

ruby-on-rails - 如何使用 Capistrano gem 为生产数据库播种?

ruby-on-rails - 检查 https 状态码 ruby

selenium - 是否可以将 Java-Enum 作为参数从 cucumber 特征文件中传递

ruby-on-rails - Minitest ruby​​ 中的模拟或 stub 日期时间

ruby-on-rails - 从数据库中删除头像