水豚的 page 和 page.body 是什么意思

What's the meaning of page and page.body in Capybara

我是新手,尝试使用 Capybara 测试我的 Rails 项目,但我对页面和 page.body 的含义感到困惑,当我尝试从 div: (在 :js=>true 模式下)

<div>"some content"</div>

我的一些测试会通过

page.should have_content "some content"

有些会通过

page.body.should have_content "some content"

我试着放内容,但只有 "page.body" 会给我一些有价值的信息, "page" 本身什么也看不到,而且我找不到任何关于页面和内容的可靠解释page.body 做到了。谁能帮帮我?

我认为这种语法已被弃用,您应该更改为:

expect(page).to have_content "some content"

这将检查呈现的页面是否包含您指定的内容。如果您不确定您是否正在呈现您期望的页面并且想要调试您的测试,您可以使用 puts page.body 来这样做。

您可以了解更多关于 should 和 expect here

page 是当前的 Capybara 会话 - 调用#find/#first/#visit/etc 与调用 page.find(...), page.first(... ), 等等

page.body returns 页面的 html 来源。

大多数时候你不想在 page.body 上调用匹配器,所以 99.9% 的时间你应该使用

page.should have_content(...) 

或等效的 expect 语法。这是因为在 page.body 上调用匹配器实际上是通过解析器运行返回的字符串并对其进行查询,而不是在您正在测试的浏览器中进行查询。