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

GWT et Vaadin Java Discussion :

Tests Selenium avec GWT : impossible dans la pratique ?


Sujet :

GWT et Vaadin Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Tests Selenium avec GWT : impossible dans la pratique ?
    Bonjour,

    J'ai un (GROS) problème concernant l'écriture de tests Selenium pour des interfaces utilisateur faîtes en GWT.

    Le problème avec GWT c'est qu'il génère automatiquement les composants HTML qui seront lus par le navigateur, ces composants HTML n'ont pas d'id ou de name les rendant clairement identifiables.
    Donc quand il s'agît de les manipuler avec le code Selenium c'est problématique car si j'ai bien compris le but de Sélénium est de sélectionner un composant dans le navigateur et de lui appliquer une action utilisateur (click, saisi, etc...).

    Sans id impossible de bien faire ça.

    J'ai remarqué qu'avec Selenium IDE et son mode enregistrement certaines actions seulement pouvaient être codées. Parfois les composants HTML sont identifiés en fonction de leur classe CSS (le style donc) mais si plusieurs composants de même type ont la même classe CSS (ce qui arrive souvent) ça ne fonctionne plus du tout. En plus le code produit est illisible car allez retrouver un bouton via sa classe CSS... Si votre test fait 3 lignes OK, si votre test fait 40 lignes c'est ingérable.

    Du coup ma question :
    Est-il possible de faire en sorte que GWT produise des composants HTML avec un id fixe et intelligible? ("btnValider", "btnAnnuler"). Ça permettrait d'utiliser Selenium dessus.

    Ou alors est-ce que je m'y prend mal, et qu'il existe un tout autre moyen que j'ignore pour utiliser du Selenium avec GWT?

    Merci pour votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 41
    Points : 62
    Points
    62
    Par défaut
    Bonjour

    J'ai rencontré le même problème.

    Dans un premier temps, j'utilisais les XPath pour localiser les composant (au lieu des id et CSS).
    Un bon tutoriel pour commencer:
    http://zvon.org/xxl/XPathTutorial/Output/

    Mais les XPath sont quand même relativement difficile a mettre en place. Donc j'ai finis par définir des IDs sur les composant et les panel dans mon code source comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <widget>.getElement().setId("un-id");
    Note: on peut mixer les 2 méthodes (utiliser les id dans un XPath). Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //div[@id='panelWest']/descendant::span[2]/descendant::input[@id='btnValider']
    Si tu trouve une meilleure solution n’hésite pas à m'en faire part.

    Bon courage

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Points : 104
    Points
    104
    Par défaut
    La meilleure façon d'utiliser Selenium est de prendre les ID des widgets HTML générés. Théoriquement, il doit être unique.

    Avec GWT, c'est à toi, développeur, pour chaque widget de venir y insérer un ID avec le code java.

    Non, GWT ne génère pas automatiquement des ID pour chaque Widget. Il génére uniquement la class de la CSS pour chaque widget.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    C'était donc bien une histoire d'id. Ca semble fonctionner merci à vous deux

  5. #5
    Membre à l'essai
    Profil pro
    Consultant BPM
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant BPM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Sauf erreur de ma part tu dois pouvoir utiliser la méthode ensureDebugId pour fixer un id pour chaque widget que tu dois manipuler dans ton test Selenium et ensuite utiliser la méthode findElement(By.id("gwt-debug-" + monId)).
    Cette méthode ajoute le préfixe gwt-debug- à ton id.

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

Discussions similaires

  1. Test Selenium avec Joomla
    Par minililypuce dans le forum Test
    Réponses: 3
    Dernier message: 09/11/2009, 22h19
  2. Réponses: 2
    Dernier message: 04/02/2009, 12h13
  3. [Stratégie] Test unitaire avec insertion dans une BDD
    Par fabszn dans le forum Tests et Performance
    Réponses: 6
    Dernier message: 06/10/2008, 17h04
  4. Réponses: 2
    Dernier message: 06/02/2007, 10h29
  5. Réponses: 3
    Dernier message: 18/03/2006, 19h51

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