2

カピバラでページ オブジェクト モデルを実装するために、site_prismをいじっています。とても面白そうです。

"[data-id='x']" (x は整数) などのセレクターを指定するにはどうすればよいですか? このようなもの:

class Home < SitePrism::Page
  set_url "http://www.example.com"
  element :row, "[data-id='@id']"
end

そして、私のテストでは:

Then /^the home page should contain a row$/ do
  @home.should have_row 1234
end
4

3 に答える 3

5

要素が定義されると、SitePrism は要素ロケーターを設定するため、あなたが提案したことは機能しません。あなたが求めたものを達成するために、以下を見てください:

class Home < SitePrism::Page
  elements :rows, "tr[data-id]"

  def row_ids
    rows.map {|row| row['data-id']}
  end
end

単一の行をマッピングする代わりに、それらはすべてマッピングされます (elements代わりに を使用element)。呼び出される別のメソッドrow_idsは、「data-id」値を持つすべての行を収集し、それらすべての値を新しい配列にマップして、その新しい配列を返します。

テストには次のようなものが含まれます。

Then /^the home page should contain a row$/ do
  @home.row_ids.should include @id
end

...一致する ID を持つ行があることを確認します@id

それほどきれいではありませんが、うまくいくはずです。

于 2012-06-12T22:49:24.503 に答える