Автоматизация форм и соскоб на сайте с помощью фреймов (с использованием Mechanize) - PullRequest
3 голосов
/ 27 июля 2011

Я пытаюсь ввести данные в форму, а затем очистить результаты на сайте, используя фреймы .Я использовал Mechanize (ruby gem) для ввода данных в формы, и это нормально.Проблема в том, что Mechanize обрабатывает фреймы как ссылки , и для «загрузки» фреймов и «просмотра» содержащихся в них форм необходимо «щелкнуть» фреймы и загрузить страницы как отдельную HTML-страницу.

Поскольку этот сайт использует отдельные фреймы для аутентификации, форм поиска и результатов, я не могу щелкнуть фреймы, заполнить формы, а затем перейти к результирующим фреймам, чтобы просмотреть данные, которые сгенерированы формами с тех пор, как яя застрял в кадре, в который я нажимаю.Если я попытаюсь вернуться, загрузив исходный URL, я потеряю то, что сделал в предыдущем кадре.

Если есть приложение, которое загружает весь контент из всех фреймов без необходимости нажимать на них,было бы идеально.Я еще не нашел.

Есть ли способ сделать это, используя ruby, или любое приложение, которое выполняет те же функции, что и Mechanize (и работает с nokogiri), которое загружает фреймы?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Чтобы уточнить ответ Бена, я подумал, что опубликую свое решение проблемы, связанной с тем, что Mechanize не сможет получить доступ к фреймам, и затем вернусь обратно к фрейму, поскольку для моего конкретного сайта он деаутентифицируется при переходе назад.Его решение использовать функцию обратного вызова (), вероятно, работает для большинства сайтов, но я тем временем выбрал другой маршрут.

Я использовал Firewatir для передачи данных в формы через Firefoxбраузер.Код для доступа к элементу во фрейме выглядит следующим образом:

    b.frame(:name, "frame_name").field_type(:name, "field_name").action

Поскольку в этой ситуации вам не нужно переходить к фрейму, вам не нужно беспокоиться о деаутентификации или перезагрузке зависимых фреймов.когда вы перемещаетесь назад и вперед.Хотя Mechanize является полезным инструментом, я нашел Firewatir лучшим вариантом при работе с фреймами, когда условия соответствуют указанным выше.

0 голосов
/ 14 сентября 2011

Механизм имеет некоторую поддержку для сеансов, не будет ли веб-сайт по-прежнему держать вас в системе, если вы перейдете на страницу входа, затем позвоните back() и перейдете на страницу поиска?

Когда формы разочаровывали меня в прошлом, я часто прибегал к использованию LiveHTTPHeaders (или подобного плагина) для обнаружения POST, которые выполняются при входе в систему и поиске, а затем выполняются те, не просматривая сами страницы.

Я не уверен, насколько хорошо это будет работать с аутентификацией.

...