我使用基于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)的不同选项卡使得此脚本触及前几个单元格然后它变得奇怪:它正确滚动到下一个单元格然后它触摸下一个单元格,直到没有可见的单元格点击。
这两个表视图之间唯一不同的是失败的一个具有部分和较低的行高。为什么会这样?
答案 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