С WATIR, за исключением посторонних библиотек, вот все, что нужно, чтобы выполнить то, что вы описали (используя только контрольный пример 'name').Я вытащил его из формата функции, так как вы уже знаете, как это сделать, и это будет более понятный путь для контрольного примера.
require 'watir'
@browser = Watir::Browser.new :firefox #open a browser called @browser
@browser.goto "http://(your search page here)" #go to the search page
@browser.text_field(:name => 'name').value = "Awesome" #fill in the 'name' field
@browser.button(:name => 'submit').click #submit the form
Если все пойдет хорошо, теперь мы должны рассмотретьрезультаты поиска.WATIR уже знает, что это на новой странице - нам не нужно указывать URL.В случае, если результаты находятся во фрейме, нам нужно получить доступ к этому фрейму, прежде чем мы сможем просмотреть его содержимое.Давайте представим, что они находятся в элементе DIV с идентификатором «search_results»:
results = @browser.div(:id => "search_results").text
resultsFrame = @browser.frame(:index => 1) #in the case of a frame
results = resultsFrame.div(id => "search_results).text
Как видите, вам не нужно сохранять всю страницу для анализа результатов.Они могут находиться в ячейках таблицы, они могут быть в другом элементе div на строку или в новом фрейме.Все они легко доступны с помощью WATIR для хранения в переменной, массиве или немедленной записи в консоль или файл журнала.
@results = Array.new #create an Array to store our results
@browser.divs.each do |div| #for each div element on the page
if div.id == "search_results" #if the div ID equals "search_results"
@results << div.text #add it to our array named @results
end
end
Теперь, если вы просто хотели получить верхнюю 5 , есть много способов.чтобы получить к ним доступ .
@results[0] #first element
@results[0..4] #first 5 elements
Я бы также предложил вам изучить несколько принципов программирования, таких как СУХОЙ (не повторяйте себя).В ваших определениях функций, где вы видите, что они совместно используют код, например, открывают браузер и посещают один и тот же URL-адрес, вы можете объединить их:
def search(how, what)
@browser = Watir::Browser.new :firefox
@browser.goto "(that search url again)"
@browser.text_field(:name => how).value = what
etc...
end
search("name", "Hilton")
search("number", "555555")
Поскольку мы знаем, что два доступных имени text_field - это «name» и«число», и они имеют логический смысл как «как», мы можем их параметризовать и использовать одну функцию для тестовых случаев «Поиск по имени» и «Поиск по номеру».Это более эффективно, если тестовые примеры остаются достаточно схожими для совместного использования.