我想编写一个Cucumber步骤定义,滚动并选择Android ListView中的特定行。在iOS上,我可以执行以下操作:
scroll_to_cell(:row => 1, :section => 0)
touch("tableViewCell indexPath:1,0")
我如何在Android上做同样的事情?
更新:在calabash-android源代码中,我找到了一个名为each_item的函数,它迭代列表视图中的每个项目。但是,我无法弄清楚它是如何有价值的,因为它只返回一个整数,因为它在列表视图中的位置而不是项目本身。所以,我不能做...... ...
each_item do |product|
touch(product)
end
答案 0 :(得分:2)
我无法找到一般解决方案。 Android解决方案将依赖于ListView实现。
适用于特定ListView的解决方案如下:
1)首先,执行query("ListView", {:getItemAtPosition => 1})
并查看查询结果中与GUI中的文本相等的属性。例如,它可以是"name"
。
2)然后您可以通过以下步骤触摸特定位置的项目:
Then /^I click the (\d+)(?:st|nd|rd|th) list item$/ do |row|
scroll_to_row("ListView", row+1)
touch "* text:\"#{query("ListView", {:getItemAtPosition => row+1})[0]["name"]}\""
end
我已经在我的Android应用中验证了它,它确实有效。