0

我有以下基于 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)的不同选项卡会使此脚本接触前几个单元格,然后它变得很奇怪:它正确滚动到下一个单元格,但随后它接触到后面的单元格下一个单元格,直到没有可见的单元格可以点击。

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

4

1 回答 1

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
于 2012-12-18T11:03:29.930 回答