未定义的方法`然后&#39; for#<object:0x000000073e1be0>(NoMethodError)

时间:2017-06-26 18:37:32

标签: ruby automated-tests calabash-android

我正在尝试在一个功能中添加测试步骤,步骤如下: 然后我滚动,直到我看到&#34;项目2&#34;文本

和相应的步骤定义如下:

Then(/^I scroll until I see the "([^\"]*)" text$/) do |text|
  q = query("text:'#{item 2}'")
  while q.empty?
    scroll_down
    q = query("text:'#{item 2}'")
  end 
end

我收到以下错误: 未定义的方法`然后&#39; #(NoMethodError)

然后(/ ^我滚动,直到我看到&#34;([^ \&#34;] *)&#34; text $ /)do | text |

可以修复这一步定义吗?也可以,如果有人可以给我一个解决方案,以相同的方法传递多个数据将不胜感激..我需要在同一页面上验证20-30个不同的项目,我试过使用perform_action(&#39; drag&#39;,16,18,30,16,5)函数但每次都拖动到不同的级别..并且无法找到元素

我几乎已经解决了这个问题... :)问题是我已经输入了两个相同步骤的方法...现在新问题..我无法打破声明..并且测试结束后不会结束的页面,可以解决这个问题吗?我应该在哪里输入break语句

itemlistelements = ['item 1','item 2','item 3']
Then(/^I scroll until I see the "([^"]*)" text$/) do |arg1|
  q = query("* text:'#{itemlistelements}'")
  while q.empty?
    perform_action('drag',16,18,40,16,5)
    q = query("* text:'#{itemlistelements}'")
    end 
end

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式编写该循环,例如:

while query("* text:'#{text}'").empty?
  perform_action('drag', 16, 18, 40, 16, 5)
end

或者您可以使用&#39; element_exists&#39;像这样:

until element_exists("* text:'#{text}'")
  perform_action('drag', 16, 18, 40, 16, 5)
end

我会选择第二个。

您可以参考此link以获取有关样式指南的更多信息,并尝试在IDE中使用rubocop