Comment puis-je remplir un formulaire en ligne avec Java?


Mon fournisseur de téléphonie cellulaire offre un nombre limité de messages texte gratuits sur leur site Web. J'utilise fréquemment le service bien que je déteste avoir toujours un onglet ouvert dans mon navigateur.

Est-ce que quelqu'un sait/me pointe dans la bonne direction de la façon dont je pourrais créer un fichier jar/utilitaire de ligne de commande afin que je puisse remplir les formulaires appropriés sur le site. J'ai toujours voulu coder un projet comme celui-ci en Java, juste au cas où quelqu'un me demanderait pourquoi je n'utilise pas autre chose.

Type Égard, Lar

Author: larjudge, 2009-07-17

8 answers

Utilisez Watij avec l'E Eclipse. Lorsque vous avez terminé, compilez comme un .exe ou exécuter avec un fichier batch.

Voici un exemple de code que j'ai écrit pour remplir des champs pour une recherche Google, qui peut être ajusté pour le formulaire Web que vous souhaitez contrôler :

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.");
 }

}
 1
Author: djangofan, 2009-07-23 00:48:38

Essayer avec Webdriver à partir de Google ou Sélénium.

 2
Author: Luke, 2009-07-17 13:51:17

On dirait que vous avez besoin d'un framework conçu pour faire des tests fonctionnels. Ceux-ci agissent comme des navigateurs et peuvent naviguer sur des sites Web pour les tests et l'automatisation. Vous n'avez pas besoin de la fonctionnalité de test, mais cela répondrait toujours à vos besoins.

Essayez HtmlUnit, ou LiFT, qui est une abstraction de niveau supérieur construite sur HtmlUnit.

 2
Author: skaffman, 2009-07-17 14:01:30

Cela dépend de la façon dont ils envoient les informations du formulaire.

S'ils utilisent une simple requête GET, il vous suffit de remplir les paramètres d'URL appropriés.

Sinon, vous devrez publier les informations du formulaire sur la page cible.

 0
Author: jjnguy, 2009-07-17 13:52:43

Vous pouvez utiliser Watij, qui fournit une interface Java/COM sur Internet Explorer. Ensuite, écrivez une petite quantité de code Java pour naviguer dans le formulaire, insérer des valeurs et soumettre.

Alternativement, si c'est simple, alors consultezHttpClient , qui est une simple API Java HTTP client.

Quoi que vous fassiez, veillez à ne pas enfreindre vos conditions d'utilisation (facile lors des tests - peut-être devriez-vous travailler contre une interface simulée au départ?)

 0
Author: Brian Agnew, 2009-07-17 13:53:21

WebTest est encore un autre framework de test webapp qui peut être plus facile à utiliser que les alternatives citées par d'autres.

 0
Author: Michael Borgwardt, 2009-07-17 13:54:12

Consultez le Paquet Apache Commons Net. Là, vous pouvez envoyer une demande de publication à une page. C'est un niveau assez bas mais peut faire ce que vous voulez (sinon, vous pouvez consulter les suites de tests fonctionnels, mais ce n'est probablement pas aussi facile à explorer).

 0
Author: Daff, 2009-07-17 13:54:21

Comme le dit jjnguy, vous devrez disséquer le formulaire pour connaître tous les paramètres. Avec eux, vous pouvez former votre propre requête en utilisant le client HTTP d'Apache et la déclencher.

 0
Author: Chris J, 2009-07-17 13:54:47