2

我正在从由默认 Rack 驱动程序支持的 Capybara 过渡到由 Poltergeist 支持的 Capybara。

出于令人沮丧的原因,我需要在加载页面之前处理会话数据。但我不知道如何直接使用 Rack 驱动程序操作会话,所以我

Capybara.current_session.driver.submit :post, "/current_search", {:session => :data }

不幸的是,Poltergeistdriver对象没有submit方法,就像 Rack 驱动程序一样。

有三种可能:

  • 如何使用 poltergeist/phantomjs 提交 POST 请求?(实现这似乎是最简单的)
  • 如何使用 poltergeist/phantomjs 直接操作会话数据?
  • 我可以重构代码,从而不再需要直接操作会话数据。这将是耗时的并且是低优先级的。

PS:由于在 Ruby 1.8 上,我们被困在Poltergeist v1.0.2

4

1 回答 1

1

capybara 的想法是测试用户交互,因此您可以像用户一样执行 POST 请求。

在你的情况下,它会是这样的:

visit '/search'
fill_in '.search-box', :with => "search query"
click_on "Submit"

有什么理由不这样做吗?

于 2013-06-03T20:19:45.540 回答