Expressions régulières : traitement de HtmlPage + API HtmlUnit
Bonjour à tous,
Dans le cadre d'un projet, je dois developper une application qui utilise l'automate HtmlUnit.
Je traite un formulaire. En effet, j'assigne des valeurs aux champs d'un formulaire situé dans un site distant.
Après, j'essaie de voir le résultat de validation de ce formulaire comme ce ci :
je récupère le code source de la page html. Puis, j'utilise les expressions régulières pour délimiter l'information que je veux la récupérer.
Mon problème réside quand je récupère le code source de la page contenant le résultat de validation du formulaire.
l'utilisation des expressions régulières ne me donne rien.
Pour bien comprendre voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.*;
public class test {
public static void main (String [] args)throws Exception{
final WebClient webClient = new WebClient();
// Get the first page
final HtmlPage page1 = webClient.getPage("http://url-of-form");
// Get the form that we are dealing with and within that form,
// find the submit button and the field that we want to change.
final HtmlForm form = page1.getFormByName("form_1");
final HtmlSubmitInput button = form.getInputByName("Submit");
final HtmlTextInput nom = form.getInputByName("nom");
final HtmlTextInput soc = form.getInputByName("societe");
final HtmlTextInput adr = form.getInputByName("adresse");
final HtmlTextInput pren = form.getInputByName("prenom");
// Change the value of the text field
nom.setValueAttribute("20");
soc.setValueAttribute("20");
adr.setValueAttribute("20");
pren.setValueAttribute("30");
// Now submit the form by clicking the button and get back the second page. <TITLE>Contact</TITLE>
HtmlPage page2 = button.click();
String s=page2.asXml();//j'obtiens un fichier xml dont la racine est la balise <html>
Pattern p = Pattern.compile("<span class=\"uFNSize3\">(.*?)</span>");
Matcher m = p.matcher(s);
if (m.find())
System.out.println("le contenu est : " + m.group());
else System.out.println("le contenu est vide"); |
le résultat affiché : "le contenu est vide"
le résultat attendu : le contenu en tre les 2 motifs
Code:
<span class=\"uFNSize3\">(.*?)</span>
Quelqu'un a une idée?
Merci d'avance.