Использование Celerity для загрузки файла - PullRequest
1 голос
/ 04 ноября 2010

Я использую Celerity в JRuby для автоматизации загрузки некоторых файлов .csv с определенных веб-сайтов.Для одного из веб-сайтов (LinkShare) я подошел очень близко, но не могу понять последний шаг.

Веб-сайт запускает загрузку файла с использованием javascript и метода «скрытого iframe» - во время обычного просмотра, когдаВы нажимаете кнопку загрузки, она вызывает javascript, который создает скрытый iframe, содержащий загружаемый контент, и браузер выбирает его и предлагает пользователю сохранить файл.

Очевидно, что в Celerity все работает не так.Я могу видеть новый iframe в jirb после того, как щелкнул ссылку, но не могу вызвать какие-либо методы для него, получая ошибки вроде:

NoMethodError: undefined method `getDocumentElement' for #<Java::ComGargoylesoftwareHtmlunit::TextPage:0x184e6efc>

У кого-либо достаточно опыта работы с Celerity / Htmlunit / Javascript /Джруби, что они могут указать мне правильное направление?Я просто хочу получить загружаемый контент (файл .csv).

Альтернативно, кто-нибудь знает о (безголовом) инструменте автоматизации браузера, который лучше подходил бы для этой задачи, если таковой существует?

Ответы [ 3 ]

0 голосов
/ 04 ноября 2010

Как сказал Эхсанул, Механизация может быть хорошей отправной точкой. Вам нужно выяснить URL-адрес, к которому осуществляется доступ, чтобы получить файл. Также найдите файл cookie или идентификатор сеанса, идентифицирующий ваш сеанс с хостом. Механизация должна это отловить и вернуть как часть того, что она делает.

0 голосов
/ 04 ноября 2010

Первое, что я хотел бы сделать, это проверить, что вы переходите к кадру. Фрейм (даже iframe) рассматривается как полностью отдельное окно, и вам придется сначала перемещаться по нему. Проверьте класс Celerity :: Frames.

В противном случае вы можете попробовать библиотеку, которая управляет браузером, а не эмулировать ее. Библиотеки, которые эмулируют браузер (например, htmlunit и mechanize), имеют свои ограничения, и вы, возможно, нашли их. Для этого я бы рекомендовал использовать watir / firewatir.

0 голосов
/ 04 ноября 2010

Механизация может работать на вас, она должна больше походить на использование браузера обычным человеком, оставаясь без головы.

http://mechanize.rubyforge.org/

...