2

如何向下滚动 UITableView,直到在Calabash/Cucumber中看到带有标签“Value”的单元格。我一直在尝试使用:

      Then I swipe down until I see "Value"

并使用:

      Then I scroll down until I see "Value"

但它们似乎都不起作用。谢谢!

当我尝试使用上述内容时,我得到的消息显然是:

您可以使用以下代码片段为未定义的步骤实现步骤定义:

然后(/^我向下滑动直到看到 "(.*?)"$/) 做 |arg1| pending # 用你希望结束的代码表达上面的正则表达式

4

4 回答 4

11

添加步骤定义

Then /^I scroll to cell with "([^\"]*)" label$/ do |name|
    wait_poll(:until_exists => "label text:'#{name}'", :timeout => 20) do
    scroll("tableView", :down)
    end
end

到 ProjectName/features/step_definitions/my_first_steps.rb ruby​​ 文件并在你的葫芦脚本中添加

Then I scroll to cell with "AAA" label

它对我来说很好。

于 2013-05-08T09:10:54.433 回答
2

每个黄瓜框架都有一组预定义的步骤。当然,这些步骤并没有涵盖所有的可能性。如果您需要其他功能,则必须定义自己的步骤:

When /^I scroll (up|down) until I see "([^\"]*)"$/ do |direction, something_to_see|
   #implement the step here
end

我无法为您提供确切的实现(什么是“价值”?),但您可以在此处找到核心功能

可能你需要功能

scroll(uiquery, direction)

uiquery会在哪里tableView

如果您使用此功能,element_is_not_hidden您可以创建一个while向下滚动的循环,直到您看到“值”。

也许类似于以下内容(我不知道葫芦,但我知道一点弗兰克)

When /^I scroll (up|down) until I see "([^\"]*)"$/ do |direction, something_to_see|
   max_scroll_tries = 10

   [0..max_scroll_tries].each do
      break if element_is_not_hidden("view marked:'#{something_to_see}'")
      scroll("tableView", direction)
   end

   check_element_exists_and_is_visible("view marked:'#{something_to_see}'")
end
于 2013-05-02T15:57:09.647 回答
1

以下也应该工作

Then(/^I scrolldown until "(.*?)" is visible$/) do |arg1|
  until query("lable text:'#{arg1}'").length > 0
    scroll("tableView", :down)
  end
end

通过以下方式调用它

Then I scrolldown until "XY" is visible
于 2014-11-27T12:41:28.430 回答
1

表有行和部分,根据您的代码的组织方式在下面的代码中使用行或部分

def scroll_side_panel(text)

section=0
scroll_to_cell(:row => 0, :section => 0) # scroll to top of view
sleep 1 # wait for a second

#Scroll to each element and compare text, if there is a match break
each_cell(:animate => false, :post_scroll => 0.2) do |row, sec|
  puts "#{query("tableViewCell indexPath:#{row},#{sec} label", :text)}  #{text}"
  if query("tableViewCell indexPath:#{row},#{sec} label", :text).first==text
    break
  end
  section=section+1
end
puts "table view text found at element number:#{section}"
end
于 2014-01-13T17:34:20.513 回答