7

我正在用 capybara 为我的 rails 应用程序编写请求规范。在我的代码中,我有类似的东西:

%table
  %tbody
     %tr{"on_click" => "location.href='some_link'"}
       %td="Some attribute"
       %td="Some attribute"
       %td="Some attribute"
       %td="Some attribute"

这样我就可以使整行可点击。我想为这个功能写一个水豚的请求规范,但我不知道怎么做。谁可以帮我这个事 ?

谢谢

4

3 回答 3

6

也许您应该首先了解 Rails 中的测试。看一下这个!http://railscasts.com/episodes/275-how-i-test这真的很有帮助。你可以给你tr上课(说).tr并做

page.find(:css, ".tr").click()

我希望这可行,在我的情况下有效!

于 2012-05-25T18:09:58.083 回答
5

我发现这不需要上课:

page.find(:xpath, "//table/tbody/tr").click

我相信您的行点击需要 JavaScript,因此您需要添加:js => true到测试的标题中。使用 JavaScript 设置测试是一项挑战。我发现这些资源很有帮助:

这是一个更完整的测试示例:

# Note that opening page by clicking on row requires JavaScript
describe "when user clicks on first row", :js => true do

  let(:first_account_listed) { Account.order(:name).first }

  before { page.find(:xpath, "//table/tbody/tr").click }

  it { should have_selector('title', text: 'Account Details') }

end
于 2012-09-14T03:49:06.863 回答
0

在 Capybara 3+ 中,您可以使用更优雅的方式使用:table_row选择器并匹配以下td值:

page.find(:table_row, ["Some attribute"]).click

如果您定义了表头,您还可以传递一个哈希而不是一个数组,它将单元格与其相应的表头匹配,如下所示:

page.find(:table_row, { "Header" => "Cell value" }).click

要深入了解这实际上是如何工作的,这里有一个指向最新 Capybara 选择器定义的链接:https ://github.com/teamcapybara/capybara/blob/master/lib/capybara/selector/definition/table_row.rb

于 2022-01-06T18:14:33.537 回答