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)を含む別のタブに変更すると、このスクリプトが最初の数セルにタッチし、その後奇妙になります。次のセルに正しくスクロールしますが、その後にタッチします。タップするセルがなくなるまで次のセル。

これらの2つのテーブルビューの唯一の違いは、失敗したテーブルビューにはセクションがあり、行の高さが低いことです。なぜこのように振る舞うのですか?

4

1 に答える 1

1

問題はscroll_to_row関数の使用にあります。これは、セクションが1つしかない単純なテーブルビューを対象としています。

より一般的な関数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 に答える