0

要素のリストをパンして、設定された最小数の要素が画面に表示されていることを確認しようとしています。私が直面している問題は、最小値を高い数値 (ページに実際にあるものよりも大きい) に設定しても、「パン」が続行され、テストに合格することです。

When /^I swipe through my list of chat suggestion cards I should see the minimum$/ do
i = 0
while i < 12

    i += 1
    wait_for_element_exists("* id:'itemContainer'")
    pan("* id:'itemContainer'", :left)
end
end

最小数が存在しない場合に失敗させるために、id: 'itemContainer' の数が実際に存在するかどうかを確認する方法はありますか?

4

1 に答える 1

1

クエリは現在画面に表示されている要素のみを返すため、スワイプしてすべてのカードをひょうたんに表示し、それらを確認する必要があります。query("* id:'itemContainer'") が一度に 1 つしか見つからないと仮定すると、つまり、カードのサイズは画面全体になります。

  12.times do
    card_before_panning = query("* id:'itemContainer'")
    pan("* id:'itemContainer'", :left)
    card_after_panning = query("* id:'itemContainer'")
    assert_not_equal card_before_panning, card_after_panning
  end

一度に複数のカードが画面に表示される場合は、追加のチェックを行う必要があります。その時点で 2 つの可視性があると仮定すると、

  11.times do
    card_before_panning = query("* id:'itemContainer' index:0")
    pan("* id:'itemContainer'", :left)
    card_after_panning = query("* id:'itemContainer' index:0")
    assert_not_equal card_before_panning, card_after_panning
  end

  # Then check that there are two visible on the final screen.
  assert_equal 2, query("* id:'itemContainer'").size

これは、アプリ内でカードの表示が異なる場合、つまり内容が異なる場合にのみ機能することに注意してください。query("* id:'itemContainer'") が各カードに対して同一の結果を持っている場合、ひょうたんはそれらを区別して何かが変更されたかどうかを確認できません。

于 2015-04-20T10:57:37.800 に答える