0

我正在尝试浏览元素列表以确认设置的最小元素数量在屏幕上。我遇到的问题是,即使我将最小值设置为一个很高的数字(大于页面上实际存在的数字),“pan”也会继续运行并且测试将通过。

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 将只返回当前在屏幕上的元素,因此您必须滑动以使所有卡片对葫芦可见并检查它们。假设 query("* id:'itemContainer'") 一次只能找到一个,即卡片的大小是一整屏,

  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

如果一次可以在屏幕上看到不止一张卡片,那么您将不得不进行额外的检查。假设当时可能有两个可见

  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 回答