IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

Récupération Image dans une ligne. [HttpUnit]


Sujet :

Tests et Performance Java

  1. #1
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut Récupération Image dans une ligne.
    Bonjour,

    J'ai un page jsp, on l'on retrouve un tableau.
    Chaque ligne du tableau comporte:
    - un code avec un lien sur ce code pour la modification
    - Diverses informations (libellé...)
    - une image (le simbole -) pour supprimer l'élément.

    Je n'arrive pas à récupérer l'image pour clique dessus.

    Voici, ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // Récupération de la table on se trouve les données
    WebTable wt = webResponse.getTableStartingWith(nomTable);
     
        // Pour toutes les lignes trouvées
        for (int i = 0; i < wt.getRowCount(); i++) {
             // Récupération du lien pour modification
             WebLink wb = wt.getTableCell(i, 0).getLinkWith(code);
     
             // Ce que je n'arrive pas, récupérer les images de la ligne
             // Ou récupérer l'image de la colonne 4 et de la ligne i
             // retourne 0
             System.out.println(wt.getTableCell(i,4).getImages().length);  
     
          // wt.getRows()[i] il n'y a pas de méthode pour récupérer les images...
       }
    Connaissez-vous une méthode

    Exemple de ligne:
    <tr>
    <td>&nbsp;<a href="/laPage?id=238653"><span class="whitespace">TOTO</span></a></td>
    <td>&nbsp;<a href="/laPage?id=238653">lib TOTO</a></td>
    <td align="center">0</td>
    <td align="center">20</td>
    <td align="center">
    <a href="/laPage?aktion=suppr&id=238653"><img src="/images/_.gif" height="13" width="12" border="0" title="Supprimer"></a>
    </td>
    ....
    </tr>
    Je voudrais cliquer sur l'image "/images/_.gif" de cette ligne

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    J'ai du mal à comprendre ce que tu n'arrives pas faire... ton dernier code ne devrait pas poser de problème et afficher dans ta page web une image "cliquable" déclenchant ton action
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    J'avoue ne pas comprendre moi non plus.

    Voici un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Pour toutes les lignes trouvées
    for (int i = 0; i < wt.getRowCount(); i++) {
    	for (int j = 0; j < 30; j++) {
    		try {
    			System.out.println(i + ": " +j);
    			if ( wt.getTableCell(i, j).getImages().length > 0 ) {
    				System.out.println("Une Image:" + wt.getTableCell(i, j).getImages()length);
    			}
    		} catch (IndexOutOfBoundsException ix) {				
           }
    }
    }
    Voici une partie du code source:
    <table width="100%" border="0" cellpadding="3" cellspacing="0" class="listeEnrTab">
    <thead>
    <tr>
    <th scope="col">Divisions</th>
    <th scope="col" >&nbsp;</th>
    <th scope="col" class="centreNonGras" colspan="2">Effectifs</th>
    <th scope="col">&nbsp;</th>

    <th colspan="2" scope="col">MEF d'appartenance</th>
    <th colspan="2">&nbsp;</th>
    </tr>
    <tr>
    <th class="niv2" scope="col">
    <img src="/images/tri_haut_vert.gif" height="6" width="12" align="bottom" border="0" id="triCroissantCode" title="Tri croissant par code">
    <a href="xxxxx/Modif?aktion=tri&tri=codeDESC"><img src="/images/tri_bas_gris.gif" height="6" width="12" align="bottom" border="0" title="Tri d&eacute;croissant par code"></a>

    &nbsp;Code
    </th>
    <th class="niv2" scope="col">
    <a href="xxxxx/Modif?aktion=tri&tri=libASC"><img src="/images/tri_haut_gris.gif" height="6" width="12" align="bottom" border="0" id="triCroissantLibelle" title="Tri croissant par libell&eacute;"></a>
    <a href="/xxxxx/Modif?aktion=tri&tri=libDESC"><img src="/images/tri_bas_gris.gif" height="6" width="12" align="bottom" border="0" id="triDecroissantLibelle" title="Tri d&eacute;croissant par libell&eacute;"></a>
    &nbsp;Libell&eacute;
    </th>
    <th class="niv2" scope="col"><div align="center">Calcul&eacute;</div></th>
    <th class="niv2" scope="col"><div align="center">Pr&eacute;vu</div></th>
    <th align="center" class="niv2" scope="col">
    <div align="center">
    <a href="/xxxxx/Ajout.sts"><img src="/images/%2B.gif" height="13" width="12" border="0" title="Ajouter une division"></a>
    </div>
    </th>
    <th class="niv2SepVert">&nbsp;</th>
    <th class="niv2">&nbsp;</th>
    <th class="niv2">&nbsp;</th>
    <th class="niv2">&nbsp;</th>
    </tr>
    </thead>
    Ce code devrait me retourner 2 images pour (i = 1 et j=0), 2 images pour (i=1 et j = 1) et 1 image pour (i=1 et j=4).

    Je ne rentre pas dans le if pour i=1 et j=4.

    Pourquoi la cinquième image ne met pas retourné.

    Dans le principe, les images de la portion de code précédente auraient dû apparaitre.

  4. #4
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Je pense qu'il y a un bug:

    Voici un code simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	public static void main(String[] args) {
    	try {
    		//connexion 
    		WebConversation webConversation = new WebConversation();
    		String url = "http://localhost/test/divisions.html";
    		WebRequest webRequest = new GetMethodWebRequest(url);
    		WebResponse webResponse = webConversation.getResponse(webRequest);
     
    		// Récupération de la table voulue
    		WebTable wt = webResponse.getTableStartingWith("Divisions");
     
    		// pour toutes les lignes
    		for (int i = 0; i < wt.getRowCount(); i++) {
    			// Je recherche la ligne dont la premiere cellule contient 1D
    			if (wt.getTableCell(i, 0).getText().equals("1D")) {
    				log4j_logger.debug("Trouvé");
     
    				// Je récupère l'élément
    				HTMLElement[] emt = wt.getTableCell(i, 4).getElementsWithAttribute("title","Supprimer cette division");
    				log4j_logger.debug("DEBUT");
    				for (HTMLElement elt : emt) {
    					log4j_logger.debug(elt.getClass());
    				}
    				log4j_logger.debug("FIN");	
    			}
    		}
    	} catch (Exception e) {
    		log4j_logger.debug("Erreur pas le temps de la gérer");
    	}
    }
    Ce code est simple, la partie intéressante concerne le traitement à l'intérieur du if (ce qu'il y a avant marche bien.

    TEST1:
    Extrait de la partie concerné par le if:
    <tr>
    <td>&nbsp;<a href="/blabla"><span class="whitespace">1D</span></a></td>
    <td>&nbsp;<a href="/blahabla0">1sqcscsqcc</a></td>
    <td align="center">0</td>
    <td align="center">30</td>
    <td align="center">
    <a href="/ff"><img src="/img/tm.gif" height="13" width="12" border="0" title="Supprimer cette division"></a>
    </td>
    <td colspan="4" align="left" class="SepVert">1&nbsp;MEF</td>
    </tr>
    Résultat:
    DEBUG test1.main(test1.java:35) - Trouvé
    DEBUG test1.main(test1.java:39) - DEBUT
    DEBUG test1.main(test1.java:43) - FIN
    TEST2:
    <tr>
    <td>&nbsp;<a href="/blabla"><span class="whitespace">1D</span></a></td>
    <td>&nbsp;<a href="/blahabla0">1sqcscsqcc</a></td>
    <td align="center">0</td>
    <td align="center">30</td>
    <td align="center">
    <a href="tst">test</a>
    <a href="/ff"><img src="/img/tm.gif" height="13" width="12" border="0" title="Supprimer cette division"></a>

    </td>
    <td colspan="4" align="left" class="SepVert">1&nbsp;MEF</td>
    </tr>
    Résultat:
    DEBUG test1.main(test1.java:32) - Trouvé
    DEBUG test1.main(test1.java:36) - DEBUT
    DEBUG test1.main(test1.java:38) - class com.meterware.httpunit.WebImage
    DEBUG test1.main(test1.java:40) - FIN
    Quand l'image est précédée d'un lien je la récupère. Sinon non.

    Je pense qu'il s'agit d'un bug HTTPUNIT non?

    En tout cas, du coup, je crois que je n'arriverai pas à récupérer mon image, me voilà bien.

    Pensez-vous qu'il vaut mieux que je ferme ce signalement et en ouvre un nouveau avec simplement ce post, pour éviter une lecture des premiers posts inutiles?

  5. #5
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    J'ai mis l'explication dans un nouveau post, pour éviter une lecture des premiers posts qui ne réflète en fait pas le réel problème.

    Voir:[BUG][httpUnit]Image et Table

  6. #6
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Bonjour,

    Je viens de me faire une méthode similaire en passant par la méthode getMatchingTables de webResponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /**
             * Correspond en gros à getTableStartingWith de httpUnit */
    	public static WebTable getTableStartingWith(WebResponse wb, String nomPremiereCellule) throws SAXException {
    		return getTablesStartingWith(wb, nomPremiereCellule) [0];
    	}
     
    	/**
             * Retourne un tableau de table dont la première cellule non vide contient le paramêtre */
    	public static WebTable[] getTablesStartingWith(WebResponse wb, String nomPremiereCellule) throws SAXException {
    		// Récupération de la table commençant par nomPremiereCellule
    		return wb.getMatchingTables(new WebTableStartingWithPredicate(), nomPremiereCellule);
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    /** pour filtre sur les table commençant par... */
    class WebTableStartingWithPredicate implements HTMLElementPredicate {
    	public boolean matchesCriteria(Object htmlElement, Object criteria) {
    		if (htmlElement instanceof  WebTable) {
    			WebTable tmpTable = (WebTable)htmlElement;
     
    			// pour toutes les lignes
    			for (int i = 0; i < tmpTable.getRowCount(); i++ ) {
    				for (int j = 0; j < tmpTable.getColumnCount(); j++) {
    					// Si la cellule n'est pas vide
    					if ( ! tmpTable.getTableCell(i, j).getText().equals("")) {
    						return tmpTable.getTableCell(i, j).getText().equals(criteria.toString());
    					}
    				}
    			}
    		}
    		return false;
    	}
    }
    Avec ce code je n'ai pas le problème,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre une image dans une ligne d'un tableau, centrée à droite
    Par ketzaldev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/11/2009, 18h06
  2. [RegEx] Récupération dans une ligne de tableau
    Par nazoreen dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2009, 20h15
  3. Réponses: 6
    Dernier message: 17/04/2009, 16h48
  4. Réponses: 2
    Dernier message: 20/03/2009, 12h25
  5. [OpenSceneGraph] Pb récupération d'image dans une texture
    Par Darri06 dans le forum OpenSceneGraph
    Réponses: 4
    Dernier message: 29/07/2008, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo