【问题标题】:How to test a page reloading in Rails / Capybara?如何在 Rails / Capybara 中测试页面重新加载?
【发布时间】:2014-03-05 14:27:02
【问题描述】:

我正在使用 Capybara 进行验收测试,我有几个场景,我需要测试页面是否重新加载:

1) 如果我将搜索输入字段留空并单击搜索图标,我想确认没有任何反应,尤其是页面没有重新加载。

2) 在结果页面上,我有三个结果排序选项。当我单击排序按钮时,页面会重新加载并应用所选的排序标准。我在使用 Capybara 甚至纯 JavaScript 单击元素时遇到了一些麻烦,因此我检查元素是否被单击的一种方法是检查页面是否已重新加载。那我该怎么做呢?

【问题讨论】:

  • 我认为您正在尝试解决更广泛问题的症状。我会专注于解决点击 Capybara 元素的问题。 Capybara 是为这些动作而设计的,你不能点击一个项目,这表明你应该研究一些事情。
  • 我完全同意你的观点,我确实需要调查 Capybara 点击问题。但是,这只是两个示例之一,我还有其他几种情况想知道页面是否已重新加载。
  • 水豚的方式是通过查看页面上的项目。根据重新加载,您的页面中是否存在应该或不应该存在的元素? (表格、div、id 等?)如果是这样,您可以检查它们是否存在。
  • 就是这样 - 我希望点击后不存在的 div 仍然存在,并且缺少预期的 div。此外 capyabara-screenshots 显示了一个屏幕截图,提示没有发生点击。
  • 手动执行此操作是否按预期工作?如果使用黄瓜,你使用@javascript标签吗?

标签: javascript ruby-on-rails testing capybara


【解决方案1】:

一种方法是根据排序标准将一个类添加到您的表(或其他一些元素)并测试其是否存在:

page.find_by_css('table.sort_by_foo').should be

【讨论】:

  • 我假设您正在使用 rspec 和 .should be。根据需要进行调整。
  • 非常感谢您的建议,但我真的对测试页面重新加载而不是解决这个特定示例感兴趣。不过,再次感谢您。
  • 我的意思是创建一个初始条件(默认类)并在页面重新加载时使用更具体的搜索或排序条件进行更改。创建您需要的指标,然后使用 Capybara 测试它的存在。它会告诉您页面是否已重新加载。感觉太简单了,但有时候简单的方法是最好的。
  • 我想我已经在这样做了,因为起初结果被包装在一个具有特定类的 div 中,这应该会在更改排序标准时发生变化。但这并不能解决您只需单击刷新按钮的情况(应用相同的排序标准)。
  • 然后包含一个带有时间戳的隐藏字段。在第一页加载时取值,并测试它是否改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多