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

XSL/XSLT/XPATH XML Discussion :

Recherche d'un élément à partir d'une "sous-requête" [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Recherche d'un élément à partir d'une "sous-requête"
    Bonjour à tous,

    J'utilise le xpath (1.0) afin de rechercher des éléments dans une page HTML (Pour l'automatisation d'une appli sous Selenium, mais peu importe)
    Voici un exemple pour mieux comprendre la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
       <label for="xxx">Mon label xxx</label> <input type="text" id="xxx" placeholder="Value for xxx"><br>
       <label for="yyy">Mon label yyy</label> <input type="text" id="yyy" placeholder="Value for yyy"><br>
       <label for="zzz">Mon label zzz</label> <input type="text" id="zzz" placeholder="Value for zzz"><br>
       <label for="test">Mon label test</label> <input type="text" id="test" placeholder="Value for test"><br>
       <label for="pppppp">Mon label autre</label> <input type="text" id="pppppp" placeholder="Value for autre"><br>
    </form>
    Mon but est de pouvoir retrouver l'input dont l'id correspond au for du label recherché
    Par exemple si je cherche Mon label test, dont l'attribut for fait référence à test je dois pouvoir retrouver l'input <input type="text" id="test" placeholder="Value for test">
    Forcément là c'est simple il est juste après...
    Mais dans la fabuleuse appli sur laquelle je travaille, ils peuvent être à des niveaux complètement différents, ce qui est abjecte j'entends bien

    Du coup voici mes différents tests

    Retrouver le for... facile !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //*[text()='Mon label test']/@for
    Sa valeur, pas de soucis non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(//*[text()='Mon label test']/@for)
    De l'autre côté, retrouver un input text par son id...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //input[@id='test']
    //input[@id=string('test')]
    De là je me suis dit, et bien plus qu'à mixer les 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //input[@id=string(//*[text()='Mon label test']/@for)]
    Et bien... non
    Après diverses recherches, j'ai essayé d'imbriquer la recherche afin de le forcer à exécuter la recherche sur le label avant, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //input[@id[starts-with(.,string(//*[text()='Mon label test']/@for))]]
    Mais là encore il se fiche complètement du label et me ramène tous les inputs de la page
    Voilà hummm quoi d'autre... non c'est tout

    Auriez-vous quelques idées à me soumettre ?

    Merci d'avance pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    C'est quoi des "niveaux différents" tu as un exemple ?

    Si on exécute ton dernier xpath sur l'exemple, cela ramène un seul input.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse caballo

    Quand je dis plusieurs niveaux différents c'est que je ne sais pas du tout si le label sera avant l'input après l'input, si un ne sera pas dans un div, span, fieldset et pas l'autre, etc...
    Bref je ne peux pas supposer une position relative, je dois ne passer que par la valeur du for

    Par contre en me confirmant mon xpath tu m'as mis un gros doute et tu as bien fait !
    Tout hier j'ai réalisé mes tests dans la console de Chrome (Qui m'a toujours satisfait pour ce genre de tests) sans arriver à quelque chose de concluant
    Du coup j'ai testé ailleurs en faisant un bout de code java et effectivement cela fonctionne, mince alors (Ou plutôt Yesssss)

    Du coup mon xpath est bon mais dans Chrome je n'ai pas le résultat attendu
    Comme je le disais c'est pour automatiser des test via Selenium, il faut que je regarde comment va se comporter notre moteur avec ce xpath, si ça se trouve...

    Merci tu m'as beaucoup avancé

  4. #4
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Effectivement. La console de Chrome ce n'est pas le moyen le plus fiable de tester des xpath.

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 22/01/2013, 10h21
  2. Réponses: 4
    Dernier message: 18/03/2010, 12h11
  3. [MySQL] Suppression d'un élément à partir d'une liste déroulante
    Par aqr75 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2009, 16h42
  4. [WD-2003] Recherche Remplac de mots à partir d'une liste
    Par rosemary_antoine dans le forum VBA Word
    Réponses: 25
    Dernier message: 12/06/2009, 15h26
  5. Réponses: 4
    Dernier message: 08/01/2007, 23h38

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