2016-01-07 2 views
-3

Я хочу, чтобы следующий тест не мог застрять в бесконечном цикле. Я бы хотел, чтобы цикл выполнялся только определенное количество раз.Стоп `до`-цикла при выполнении условия

When /^I click the Settings link$/ do 
    footer = @browser.div(:id, 'iwinbottombar') 
    footer.wait_until_present 
    unless footer.html.include?('Settings') 
    throw Exception.new("Expected to see the settings button but it was not there") 
    end 
    until @browser.div(:id, 'dialogcontainer').div(:class, 'settings_browsebutton button clickable').present? do 
    footer.a(:class, 'button_settings').when_present.click 
    end 
end 

Но я не уверен, как ограничить код для этого. Мне кажется, мне нужен счетчик, но я не уверен, как его реализовать.

+0

Если вы спрашиваете, что вы, я думаю, что вы просите от комментариев, читать о [остановочных Проблема] (https://en.wikipedia.org/wiki/Halting_problem). – ndn

ответ

2

Если я правильно получил, вы хотите что-то вроде while/until, но с максимальным временем повторов:

10.times do 
    break if condition_met? 
    do_whatever 
end 
+0

Нет, он хочет, чтобы код выполнял определенное ** количество времени **, а не определенное ** количество раз **. –

+0

привет, это сработает, проблема в том, что я не знаю, сколько попыток потребуется, пока условие не будет выполнено, поэтому я не хочу устанавливать определенное значение, я не хочу, чтобы тест запускался больше раз, чем необходимо – Ethranes

+1

@ Михай-АндрейДинкулеску, правда? * «запустите цикл только определенное количество раз» *. – ndn

Смежные вопросы