如何在休息时停止无限循环

时间:2016-11-17 12:07:57

标签: ruby rspec capybara acceptance-testing

def find_a_specific_security_channel_inside_a_table
  expect(page).to have_css('#datatableGeneric')

  loop do   
    td = page.all('td', text: 'NAME')
    Timeout.timeout(5) do
      if td.empty? 
        click_link ('Next')
        sleep 1
      else
        find('#datatableGeneric', :text => 'NAME').click
        break
      end
    end
  end
  return true
end

应循环遍历表的内容,直到找到('NAME')字符串,最后跳出循环。但它并没有突破循环。

1 个答案:

答案 0 :(得分:1)

您只是从超时块中断而不是从主循环中断。

loop do
  td = page.all('td', text: 'NAME')
  break_loop = false

  Timeout.timeout(5) do
    if td.empty? 
      click_link ('Next')
      sleep 1
    else
      find('#datatableGeneric', :text => 'NAME').click
      break_loop = true
    end
  end

  break if break_loop
end