В Ruby есть замечательная концепция, называемая итерациями, которая может помочь с этим.
Первая пуля. зацикливание заданное количество раз, скажем, 100, например. Существует около 10 различных способов облысения этого кота, но мой любимый именно этот
100.times do
#code lines to be repeated
end
Второй пункт, который, вероятно, меняет подход, предполагая, что вы хотите сделать что-то один раз для каждой строки в массиве имен сайтов.
Сначала создайте свой массив, а затем используйте замечательный метод .each, чтобы что-то делать с каждой строкой массива. Если ваш массив был назван page_names
, тогда
page_names.each do |name|
#code to be repeated, use `name` variable at point you need the value
browser.text_field(:name => "page_name").set name
end
Этот метод .each можно использовать практически с любой «коллекцией» предметов, что означает, что вы можете в конечном итоге делать вещи, которые выглядят следующим образом
pages.each do |page|
code that does something with page.name
code that does something with page.password
end
Третья пуля, да, у Майкла (которого я видел, только что опубликовал ответ) есть то, что я бы предложил, это вложенный хеш, хотя, поскольку вы начинаете с имен страниц, и это та часть, которую вы знаете, а URL-адрес что-то, что собирает скрипт, я бы использовал page_name как ключ к внешнему хешу, который позволил бы вам искать значения url и пароля для каждого имени страницы. (Я предполагаю, что в этом случае вы будете делать что-то вроде случайного генерирования паролей и, следовательно, необходимости их хранения)
В сочетании с .each важно знать, что в случае использования .each с хешами, первое, что вы получите от .each, это ключ, а затем значение. Так что, если у вас был вложенный хэш, описанный выше, предварительно заполненный паролями и введенный с именами страниц, вы можете сделать что-то вроде этого
pages.each do |page_name, pageinfo|
browser.goto("http://website.com")
browser.text_field(:name => "page_name").set page_name
browser.text_field(:name => "password").set pageinfo[:password]
browser.button(:value => "Publish").click
pages[page_name][:url] = browser.url
end
(учитывая, что Мерфи любит меня, я полагаю, что я допустил некоторую ошибку выше, которую, без сомнения, обнаружит еще один самый серьезный случай. К счастью, вы можете отредактировать эти ответы, чтобы исправить это позже)