如果id存在,如何保持平移?

时间:2015-04-18 22:14:41

标签: ruby calabash-android

我试图浏览一系列元素,以确认屏幕上是否存在设定的最小元素数。我遇到的问题是“泛”等问题。即使我将最小值设置为较高的数字(大于页面上实际存在的数字),测试仍将继续进行,测试将通过。

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:&#39; itemContainer&#39;实际存在,如果最小数字不存在则使其失败?

1 个答案:

答案 0 :(得分:1)

查询只返回屏幕上当前显示的元素,因此您必须向上滑动以使所有卡片对calabash可见并检查它们。假设查询(&#34; * id:&#39; itemContainer&#39;&#34;)一次只找到一个,即卡片的大小是整个屏幕,

  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

请注意,这仅适用于您的应用中卡片的显示方式不同,即它们的内容不同。如果查询(&#34; * id:&#39; itemContainer&#39;&#34;)每张卡的结果相同,那么calabash将无法区分它们以查看是否有任何更改。