【问题标题】:How to simulate pressing Enter in Rspec如何在 Rspec 中模拟按 Enter
【发布时间】:2013-07-06 16:52:31
【问题描述】:

我有一个 RSpec 测试,如下所示

describe "visitor do search" do      
  before do
      fill_in "keyword", with: "London"
      click_button "search_all"
    end

    it "should visit search result path" do
      page.should have_selector('title', :text => "Search Result")
    end
end

我想删除按钮“search_all”并使用事件更改它,例如按键盘输入。

如何使用 RSpec 编写代码?

问候,

【问题讨论】:

    标签: ruby-on-rails rspec ruby-on-rails-3.2 capybara rspec-rails


    【解决方案1】:

    只需在查询字符串的末尾添加一个 '\n':

    fill_in "keyword", with: "London\n"
    

    【讨论】:

    • 非常好。我几乎用 capybara-webkit 安装了 Qt 来完成这个超级琐碎的任务。我正在将 rspec 与水豚一起使用,这也有效:find('#thing').set "word\n"
    • 请注意,这仅在您对 with 值使用双引号时才有效。如果你使用单引号,比如with: 'London\n',它实际上会输入换行符,因为除了转义单引号字符之外,转义序列在单引号内不起作用。
    【解决方案2】:

    您可以使用capybara-webkit 来完成它,这是一个允许您测试 Javascript 的 Capybara 驱动程序。只需阅读文档以安装它并使其在您的项目中运行,然后您应该能够使用这段代码模拟键盘上的点击:

    keypress = "var e = $.Event('keydown', { keyCode: 13 }); $('body').trigger(e);"
    page.driver.execute_script(keypress)
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-05-11
      • 1970-01-01
      • 2012-08-11
      • 2019-06-29
      • 1970-01-01
      • 2012-01-22
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多