Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > автоматический ввод данных на форме (html)и submit


Автор: olegrolik 6.1.2008, 19:49
Есть форма для регистрации. Требуется сделать робота, который автоматически бы регистрировал нового юзера. 
Возможно это относится к спаму и запрещено - прощу прощения.
Подскажите в какую сторону смотреть, или даже примерчик дайте. Спасибо smile
P.S. предполагаю, что это относится к парсингу html.

Автор: nornad 6.1.2008, 21:01
Вполне можно распарсить хтмл, получить тег формы, выдрать из него все нужные элементы и атрибут action, составить запрос и выполнить его. Не вижу сложностей. Один раз смотришь код страницы регистрации и один раз пишешь бота. Только админы тебе точно за такое спасибу не скажут. smile 

Автор: Tony 7.1.2008, 11:33
Bil v java takoj klass vrode Robot nazivalsj. Karo4e on mozhet: stavitь kursor v nuzuju poziciju(koordinati),vbivatь tekst, nazmimatь enter....

Автор: Alexis 7.1.2008, 12:09
Посмотрите на библиотеки для Unit-тестирования веб-интерфейсов, например http://httpunit.sourceforge.net/

Работать с ней достаточно просто, в вашем случае будет что-то вроде:
Код

WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://www.domain.com/registration.jsp");
WebResponse response = conversation.getResponse(request);

WebForm registrationForm = response.getFormWithID("registrationForm");
registrationForm.setParameter("name", name);
registrationForm.setParameter("email", email);
registrationForm.setParameter("password", password);
response = logonForm.submit();


Так же HttpUnit поддерживает JavaScript, несколько библиотек для парсинга HTML, можно довольно гибко все настраивать. Короче, удобная штука.

Автор: Kangaroo 7.1.2008, 12:34
Цитата(Alexis @  7.1.2008,  11:09 Найти цитируемый пост)
Посмотрите на библиотеки для Unit-тестирования веб-интерфейсов, например http://httpunit.sourceforge.net/

Можна также ActiWATE посмотреть.

Автор: olegrolik 9.1.2008, 11:00
Всем большое спасибо!  smile 

Автор: olegrolik 25.11.2008, 18:10
Alexis, а нет ли примера с Java Script?
Есть такая вот ссылка - "<a href="javascript:uploadPrompt('welcomeSSA.wav')"><img src="/appadmin/images/upload.gif" border="0" alt="Upload"></a>"
При нажатии на неё из браузера открывается новое окно.
Читая доку, ничего не нашёл про то, как это сделать.

Автор: Samotnik 25.11.2008, 18:19
olegrolik, что сделать нужно ? 
я не вижу связи с первым постом (просьба о создании регистрации юзера) и последним(ссылка с upolad файла )  smile 

Автор: olegrolik 25.11.2008, 18:24
Цитата(Alexis @ 7.1.2008,  12:09)
Посмотрите на библиотеки для Unit-тестирования веб-интерфейсов, например http://httpunit.sourceforge.net/

Работать с ней достаточно просто, в вашем случае будет что-то вроде:
Код

WebConversation conversation = new WebConversation();
WebRequest request = new GetMethodWebRequest("http://www.domain.com/registration.jsp");
WebResponse response = conversation.getResponse(request);

WebForm registrationForm = response.getFormWithID("registrationForm");
registrationForm.setParameter("name", name);
registrationForm.setParameter("email", email);
registrationForm.setParameter("password", password);
response = logonForm.submit();


Так же HttpUnit поддерживает JavaScript, несколько библиотек для парсинга HTML, можно довольно гибко все настраивать. Короче, удобная штука.

вместо http://www.domain.com/registration.jsp надо вызвать javascript javascript:uploadPrompt('welcomeSSA.wav'), дальше всё тоже самое.

Автор: Samotnik 25.11.2008, 18:36
olegrolik, туда можно передать только путь к источинику (html, jar, sp, и т.д.)
как вариант сделать такое
Код

WebRequest request = new GetMethodWebRequest("/путь/к/wav/файлу/welcomeSSA.wav");


Добавлено через 34 секунды
olegrolik, либо путь к  JavaScript'у  который подгрузит этот файлик 

Автор: olegrolik 25.11.2008, 18:48
Цитата(Samotnik @ 25.11.2008,  18:36)
olegrolik, туда можно передать только путь к источинику (html, jar, sp, и т.д.)
как вариант сделать такое
Код

WebRequest request = new GetMethodWebRequest("/путь/к/wav/файлу/welcomeSSA.wav");


Добавлено @ 18:37
olegrolik, либо путь к  JavaScript'у  который подгрузит этот файлик

не катит.

Автор: Samotnik 25.11.2008, 19:21
а как нибудь так ?
Код

GetMethodWebRequest requestListPage = new GetMethodWebRequest("http://www.domain.com/registration.jsp");
WebResponse responseListPage = theWebConversation.getResponse(requestListPage);
WebLink nextLink = responseListPage.getLinkWithID("welcomeSSA.wav");
nextLink.click();

 smile 

Автор: olegrolik 26.11.2008, 11:05
Цитата(Samotnik @ 25.11.2008,  19:21)
а как нибудь так ?
Код

GetMethodWebRequest requestListPage = new GetMethodWebRequest("http://www.domain.com/registration.jsp");
WebResponse responseListPage = theWebConversation.getResponse(requestListPage);
WebLink nextLink = responseListPage.getLinkWithID("welcomeSSA.wav");
nextLink.click();

 smile

А где тут вообще java script????

У меня есть страница html. Допустим, www.mysite.com/index.html. На ней 5 ссылок на выполнение java script такого вида: javascript:uploadPrompt('welcomeSSA.wav').
Так мне нужно с этой странички вызвать java script.

Автор: Samotnik 26.11.2008, 11:52
olegrolik, я понимаю, что тебе нужно ! 
Но не всегда наши желания совпадают с нашими возможностями ! 
Код

GetMethodWebRequest(java.lang.String urlString)
          Constructs a web request using a specific absolute url string.
GetMethodWebRequest(java.net.URL urlBase, java.lang.String urlString)
          Constructs a web request using a base URL and a relative url string.
GetMethodWebRequest(java.net.URL urlBase, java.lang.String urlString, java.lang.String target)
          Constructs a web request with a specific target.

Легко заметить из спецификации, что конструктора с параметром  "мне нужно вставить javascript" нету  smile 
но есть гугл, который по запросу   GetMethodWebRequest javascript  выдал кое что интересное, что я тебе с небольшими различиями и продемонстрировал. Если ты не понимаеш что это, то почитай спецификацию  smile 

Автор: olegrolik 26.11.2008, 15:28
Цитата(Samotnik @ 26.11.2008,  11:52)
olegrolik, я понимаю, что тебе нужно ! 
Но не всегда наши желания совпадают с нашими возможностями ! 
Код

GetMethodWebRequest(java.lang.String urlString)
          Constructs a web request using a specific absolute url string.
GetMethodWebRequest(java.net.URL urlBase, java.lang.String urlString)
          Constructs a web request using a base URL and a relative url string.
GetMethodWebRequest(java.net.URL urlBase, java.lang.String urlString, java.lang.String target)
          Constructs a web request with a specific target.

Легко заметить из спецификации, что конструктора с параметром  "мне нужно вставить javascript" нету  smile 
но есть гугл, который по запросу   GetMethodWebRequest javascript  выдал кое что интересное, что я тебе с небольшими различиями и продемонстрировал. Если ты не понимаеш что это, то почитай спецификацию  smile

Значит последние твои ответы просто не в тему. 
Я задал вопрос не для того, чтобы получить примерный ответ.
Пожалуйста, пиши в тему smile

Автор: Samotnik 26.11.2008, 16:59
Цитата(olegrolik @  26.11.2008,  14:28 Найти цитируемый пост)
Значит последние твои ответы просто не в тему. 

как раз таки в тему !
Код

WebLink nextLink = responseListPage.getLinkWithID("welcomeSSA.wav");
nextLink.click();

это пробывал использовать ?
это переход по линке  smile 
Ладно все молчу, разбирайся дальше сам  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)