触摸列表项仅触及其他所有单元格

时间:2012-12-17 19:14:06

标签: ios cucumber calabash

我使用基于Calabash的Cucumber编写了以下步骤定义。名称说明了一切:我想触摸表格视图中的每个单元格,然后再次返回表格视图。

Then /^I touch every list item and go back again$/ do
    total_sections = query("tableView", "numberOfSections")
    last_section = total_sections[0] - 1
    (0..last_section).each do |section|
        total_rows = query("tableView", numberOfRowsInSection:section)
        end_of_range = total_rows[0] - 1
        (0..end_of_range).each do |row|
            scroll_to_row "tableView", row
            sleep(STEP_PAUSE)
            macro %Q[I touch list item number #{row+1}]
            macro %Q[I go back]
        end
    end
end

这在一个简单的表视图中工作正常 - 但是更改为包含分段表视图(AZ)的不同选项卡使得此脚本触及前几个单元格然后它变得奇怪:它正确滚动到下一个单元格然后它触摸下一个单元格,直到没有可见的单元格点击。

这两个表视图之间唯一不同的是失败的一个具有部分和较低的行高。为什么会这样?

1 个答案:

答案 0 :(得分:1)

问题在于使用scroll_to_row功能。这适用于只有一个部分的简单表视图。

更通用的函数scroll_to_cell支持节和行。语法略有不同:

def scroll_to_cell(options={:query => "tableView",
                            :row => 0,
                            :section => 0,
                            :scroll_position => :top,
                            :animate => true})
   ...
end

例如

scroll_to_cell(:section => 1, :row => 2)

对于您的情况,还有一个高级函数each_cell。例如:

each_cell(:query => "tableView") do |row, sec|
    touch("tableViewCell indexPath:#{row},#{sec}")
    #...
end