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 :

[Xpath] utilisation dans Ajax


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut [Xpath] utilisation dans Ajax
    Bonjour à tous,

    Je travaille à l'aide de fonction ajax. Mon cas de test est simple. Je vais sur une page où il y a juste un bouton. Je clique sur le bouton, ce qui provoque un appel ajax au retour duquel un tableau est affiché.

    Mon tableau ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <input type="button" onclick="trucAjax()" />
     
    <table id="montableau">
       ...
    </table>
    Quand je recherche (avec selenium) mon tableau par id, je le trouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    selenium.isElementPresent("montableau");
    // --> true
    Par contre si je le cherche en xpath, il ne le trouve pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    selenium.isElementPresent("//table[@id='montableau']");
    // --> false
    Sur d'autres pages dans lesquelles des tableaux sont présents dès le chargement, j'arrive sans difficulté à les atteindre en xpath...

    Je pense que l'appel ajax y est pour quelque chose. J'imagine qu'en xpath, je ne peux pas chercher un élément ajouté en ajax... Est ce que je me trompe ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par thierryler Voir le message
    Je pense que l'appel ajax y est pour quelque chose. J'imagine qu'en xpath, je ne peux pas chercher un élément ajouté en ajax... Est ce que je me trompe ?
    Bah, c'est surtout que ça dépend à quel outil tu le demandes.

    jQuery te fera ça sans problème. Selenium, ça, j'en sais rien.

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    J'utilise selenium avec Java. Je pense que ça utilise justement jquery car ce sont des propriétés jquery que j'utilise pour déterminer si un appel ajax est fini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final String conditionJQuery = "selenium.browserbot.getCurrentWindow().jQuery.active == 0";
    selenium.waitForCondition(conditionJQuery, SeleneseTest.DEFAULT_WAIT_PERIOD );
    Déjà est ce que je ne suis pas en train de délirer en imaginant que c'est ajax qui fait déconner ma recherche xpath et pas celle par id ?

  4. #4
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    J'ai un peu avancé dans la compréhension du problème mais je suis toujours perdu.

    En fait j'ai, en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a onclick="trucajax()" id="monlien">..</a>
    Au début du test, je fais genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    selenium.isElementPresent("monlien"); // --> true
    selenium.isElementPresent("//a[@id='monlien']"); // --> true
    ensuite je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    selenium.click("//a[@id='monlien']");
    Thread.sleep(5 secondes);
    Puis je refais mon test sur la présence du lien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    selenium.isElementPresent("monlien"); // --> true
    selenium.isElementPresent("//a[@id='monlien']"); // --> false
    Et là c'est le drame. Le lien a disparu du xpath mais pas des id...

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    J'ai encore avancé un peu. Après mon click, je réouvre la page avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    selenium.click("//a[@id='monlien']");
    Thread.sleep(5 secondes);
     
    selenium.open(monurl)
    selenium.waitForPageToLoad("3000");
    En jsf ca me réaffiche bien tout ce dont j'ai besoin, notamment le résultat du ajax. Et là tous mes tests marchent, y compris ceux qui dépendaient du résultat du ajax.

    Ca semble valider le fait que l'appel ajax fait à la suite du clic fou en l'air le xpath. Est ce que je délire ?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    À mon humble avis, seul un grand connaisseur de Selenium saurait répondre.

    XPath n'est qu'une norme, publiquement et complétement définie. Ses implémentations sont nombreuses et variées.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    J'ai déjà testé Selenium et j'ai été bien déçu par son support de XPath. Utilise plutôt leur mode de recherche CSS que j'ai trouvé plus "fiable".

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/04/2013, 14h10
  2. Réponses: 1
    Dernier message: 20/01/2009, 14h31
  3. Utilisation requete AJAX et recuperation des donnees dans un WS
    Par clairette59 dans le forum Services Web
    Réponses: 1
    Dernier message: 15/08/2008, 22h08
  4. Utilisation d'Ajax dans une DATALIST
    Par Gladiator dans le forum ASP.NET
    Réponses: 8
    Dernier message: 09/01/2008, 11h59
  5. Récupérer variables d'1 <form> et les utiliser dans X
    Par honeyz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2006, 11h39

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