2009-07-17 3 views
1

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

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

С наилучшими пожеланиями, Lar

ответ

1

Используйте 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("[email protected]"); 
     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."); 
} 

} 
2

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

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

0

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

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

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

+0

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

+0

Точно, у вас есть все, что вам нужно в самой Java. Составьте URL-адрес в виде строки, создайте java.net.URL из строки и откройте соединение. Так просто. Проверьте: http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL.html – zvikico

+0

Правда, но мой ответ касается того, как «Заполнить онлайн-форму с помощью Java», которая это его вопрос был вообще. Я понимаю, что это, вероятно, сложнее, чем просто одна форма. – jjnguy

0

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

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

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

0

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

0

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

0

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

Смежные вопросы