加载一个页面后,我有了运行、隐藏和显示基于xhr返回的数据的各种项目的代码.

我的集成测试如下所示:

it "should not show the blah" do
    page.find('#blah').visible?.should be_true
end 

当我在这个测试运行的上下文中手动转到页面时,#blah如我所料是not可见的.我怀疑Capybara正在查看页面的初始状态(在本例中不可见),判断DOM的状态,并在JS运行之前失败测试.

是的,我在包含描述块上设置了:js => true:)

任何 idea 都将不胜感激!我希望我不必在这里故意拖延时间,那样会让人感觉不舒服,而且会让事情变慢.

推荐答案

我认为这里的find语句是隐式wait语句,所以水豚会等到元素出现在页面上,但不会等到它变为可见.

在这里,您希望水豚等待可见元素出现,这应该可以通过指定visible选项来实现:

expect(page).to have_selector('#blah', visible: true)

我还没有try 过,但是如果您希望find始终等待可见元素,那么ignore_hidden_elements配置选项在这里可能也很有用.

Ruby相关问答推荐

如何查询哪些RuboCop规则适用于文件?

清理 jruby 中输入数据的编码错误

类 SpecificationPolicy 的超类不匹配

如何在 OpenURI 中指定http 请求标头

为什么 Rake 不能连续调用多个任务?

构造Ruby的现代方法是什么?

Ruby 哈希文字的顺序是否得到保证?

Ruby语法

Ruby:从字节创建一个字符串

在 Ruby 中将数组转换为索引哈希

Rails 在最后一个之前加入逗号和and的字符串列表

在包含任意数量的嵌套散列和数组的散列中查找键/值对

以条件方式构建哈希

Ruby 与计算机科学相关的 yield 特性

如何在 Ruby 中遍历多行字符串?

Ruby 将 CSV 文件读取为 UTF-8 和/或将 ASCII-8Bit 编码转换为 UTF-8

使用哈希值呈现 ERB 模板

Ruby:捕获异常后继续循环

Ruby:从 Ruby 中的变量创建哈希键和值

为什么 Ruby setter 需要self .班级内的资格?