Как я могу заполнить онлайн-форму с Java? - PullRequest
1 голос
/ 17 июля 2009

Мой провайдер сотовой связи предлагает ограниченное количество бесплатных текстовых сообщений на своем веб-сайте. Я часто пользуюсь сервисом, хотя ненавижу постоянно открывать вкладки в своем браузере.

Кто-нибудь знает / указывает мне правильное направление, как я мог бы создать файл jar / утилиту командной строки, чтобы я мог заполнить соответствующие формы на сайте. Я всегда хотел закодировать такой проект на Java, на тот случай, если кто-нибудь спросит, почему я не использую что-то еще.

С уважением, Lar

Ответы [ 8 ]

2 голосов
/ 17 июля 2009

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

Попробуйте HtmlUnit или LiFT , что является абстракцией более высокого уровня, построенной на HtmlUnit.

2 голосов
/ 17 июля 2009

Попробуйте с Webdriver от Google или Selenium .

1 голос
/ 23 июля 2009

Используйте Watij с Eclipse IDE. Когда вы закончите, скомпилируйте как .exe или запустите с командным файлом.

Вот пример кода, который я написал для заполнения полей поиска Google, который можно настроить для веб-формы, которой вы хотите управлять:

package goog;
import junit.framework.TestCase;
import watij.runtime.ie.IE;
import static watij.finders.SymbolFactory.*;
public class GTestCases extends TestCase {

 private static watij.runtime.ie.IE activeIE_m;
 public static IE attachToIE(String url) throws Exception {   
  if (activeIE_m==null)
     {
       activeIE_m = new IE();
    activeIE_m.start(url);
     } else {
       activeIE_m.goTo(url);
     }
  activeIE_m.bringToFront();
     return (activeIE_m);    
 }

 public static String getActiveUrl () throws Exception {  
  String currUrl = activeIE_m.url().toString();  
  return currUrl;
 }

 public void testGoogleLogin() throws Exception {
  IE ie = attachToIE("http://google.com");
     if ( ie.containsText("/Sign in/") ) {
      ie.div(id,"guser").link(0).click();
      if ( ie.containsText("Sign in with your") ||
        ie.containsText("Sign in to iGoogle with your")) {
       ie.textField(name,"Email").set("test@gmail.com");
       ie.textField(name,"Passwd").set("test");
       if ( ie.checkbox(name,"PersistentCookie").checked() ){
        ie.checkbox(name,"PersistentCookie").click();
       }
       ie.button(name,"signIn").click();       
      }
     }
     System.out.println("Login finished.");
    }

 public void testGoogleSearch() throws Exception {
  //IE ie = attachToIE( getActiveUrl() );
  IE ie = attachToIE( "http://www.google.com/advanced_search?hl=en" );
     ie.div(id,"opt-handle").click();
     ie.textField(name,"as_q").set("Watij");
     ie.selectList(name,"lr").select("English");
     ie.button(value,"Advanced Search").click();
     System.out.println("Search finished.");
 }

 public void testGoogleResult() throws Exception {
  IE ie = attachToIE( getActiveUrl() );
  ie.link(href,"http://groups.google.com/group/watij").click();
  System.out.println("Followed link.");
 }

}
0 голосов
/ 17 июля 2009

Как говорит jjnguy, вам нужно будет проанализировать форму, чтобы узнать все параметры. С их помощью вы можете сформировать свой собственный запрос с помощью HTTP-клиента Apache и запустить его.

0 голосов
/ 17 июля 2009

Проверьте пакет Apache Commons Net . Там вы можете отправить запрос POSt на страницу. Это довольно низкий уровень, но он может делать то, что вы хотите (в противном случае вы можете проверить комплекты функционального тестирования, но, вероятно, не так легко разобраться).

0 голосов
/ 17 июля 2009

WebTest - это еще одна среда тестирования веб-приложений, которая может быть проще в использовании, чем альтернативы, цитируемые другими.

0 голосов
/ 17 июля 2009

Вы можете использовать Watij , который предоставляет интерфейс Java / COM для Internet Explorer. Затем напишите небольшое количество кода Java для навигации по форме, вставьте значения и отправьте.

В качестве альтернативы, если это просто, то посмотрите HttpClient , который является простым клиентским API Java HTTP.

Что бы вы ни делали, следите за тем, чтобы вы не нарушали свои условия обслуживания (легко во время тестирования - возможно, вам следует изначально работать с фиктивным интерфейсом?)

0 голосов
/ 17 июля 2009

Зависит от того, как они отправляют информацию в форме.

Если они используют простой запрос GET, все, что вам нужно сделать, это заполнить соответствующие параметры URL.

В противном случае вам нужно будет опубликовать информацию о форме на целевой странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...