Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Работа с сетью > Как залогиниться на сайт? |
Автор: Dean 1.2.2010, 17:37 |
Всем привет. Моя задача такая: залогиниться на сайт, перейти по паре ссылок, ввести данные для поиска в форму и скачать документ, который вернут по результатам поиска. У меня пока получилось только зайти на первую страницу сайта, но как вбить туда логин, пароль и нажать кнопку "login" я не знаю, и как потом пойти по нужной мне ссылке тоже. ![]() Для этого надо выполнить несколько GET/POST запросов или можно объединить некоторые действия? И как послать несколько запросов серверу подряд? Протокол HTTP 1.1. Может кто подскажет? Если можно по-проще, для чайника ![]() |
Автор: Akeem 2.2.2010, 22:07 |
Я бы посоветовал использовать селениум (Selenium) и не парится. Пару строк кода и все. |
Автор: SergeyFromUkraine 3.2.2010, 01:25 |
Dean , у тебя есть несколько возможностей , которые отличаются трудоемкостью. 1) наиболее трудоемкий способ - эмулировать действия на уровне HTTP протокола, то есть отсылать HTTP GET POST запросы, помнить про Cookies и Referer хеадеры. 2) Есть библиотека HtmlUnit - эмулирует действия на уровне пользователя http://htmlunit.sourceforge.net/gettingStarted.html , тоесть предоставляет API для загрузки страницы , поиска элементов интерфеса(input , anchors, buttons) И нажатие на них (click, submit) . Частично поддерживает JavaScript. 3) Есть еще Selenium - аналогичен HtmlUnit , но действия навигации и прочего выполняют уже не java классы, а настоящий браузер ,которым управляет Selenium . Полностью поддерживает JavaScript, ибо браузер. Selenium чуть медленнее HtmlUnit из-за того, что нужно запускать браузер. Также хорошо бы установить Firebug (аддон для Firefox) или его аналоги для других браузеров. Во первых, в нем есть вкладка Network - в которой будет показан HTTP обмен между браузером и сервером. Во вторых используя Inspect Element и вкладку HTML - можно легко подобрать признаки, по которым искать элементы если будешь использовать HtmlUnit или Selenium (имя , атрибуты, id, xpath). |
Автор: Dean 5.2.2010, 17:34 |
Спасибо всем за советы ![]() С GETами и POSTами не совсем понятно что и как делать. Пока получилось сделать с помощью WebDriver. Только можно ли сделать чтоб окно браузера не выскакивало каждый раз при запуске? |
Автор: Akeem 5.2.2010, 20:24 | ||
Dean, Как с WebDriver так и с Selenium (так как первый уже включен в новую версию второго) такое не получится. Так как оба спроектированы чтобы броузер выскакивал. Такое можно было провернуть с HttpUnit. Либо поробывать использовать WEbDriver как:
Сам такого не делал, точно не скажу. |
Автор: Dean 8.2.2010, 11:03 | ||||
Akeem, получилось - окно браузера больше не выскакивает ![]() только не
а
хотя может твой вариант тоже возможен, но у меня эклипс на него ругался. |
Автор: Akeem 11.2.2010, 23:05 |
Dean, Я по пам"яти писал, так что мог и ошибится в названии класса ![]() *возможен если самому имплементировать интерфейс WebDriver ![]() |