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

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2015
    Messages : 128
    Points : 61
    Points
    61
    Par défaut transférer le contenu de variable Selenium d'un test suite à un autre
    Bonjour,
    Je travaille actuellement sur un projet pour laquelle je dois effectuer des test à l'aide de Sélénium IDE.

    Ce projet permet de créer des produits avec des autorisations.
    La difficulté de ce projet est qu'une fois une autorisation est crée, il n'est plus possible de supprimer le produit (que l'autorisation soit supprimée ou non).

    J'écris différents test suites afin de tester l'application.
    Vu que les produits ne peuvent être ni en double ou supprimé, le nom que je donne au produit contient la date et l'heure. Cela m'assure d'avoir un nom différent.
    Pas de soucis cela fonctionne.

    J'ai une liste de test suite:
    TS01 : création d'un produit
    TS02 : édition d'un produit
    TS03 : création d'une autorisation
    TS04 : Lier une autorisation à un produit.

    Chaque test suite appelle différent test cases:
    TC01 : ouverture d'une session
    TC02 : ajout produit + détails
    TC03 : édition d'un produit + sauvegarde des modifications
    TC04 : test d'accès du produit
    TC05 : création d'une autorisation
    TC06 : modification du status d'une autorisation
    etc..

    Maintenant, chaque test suite doit pouvoir fonctionner tout seul.
    Donc, si j'exécute le TS01, ce test suite ajoute un produit de nom "Prd-23_11_2017-15_05_09" et en fin de test suite la variable ProduitID = 123
    Si j'exécute une 2ème fois TS01, le nom du nouveau produit sera "Prd-23_11_2017-15_08_42" et ProduitID : 124

    Maintenant, j'exécute le TS03 pour créer une autorisation qui va s'appeler "Auto-23_11_2017-15_42_02" et autoID = 95

    J'aimerais lier l'autorisation "Auto-23_11_2017-15_42_02" au produit "Prd-23_11_2017-15_05_09" avec le test suite TS04

    Mon problème est le suivant:
    Comment lier l'autorisation au produit ? Je ne peux pas trier sur la date (c'est le 1er produit crée). Comment connaitre le nom du produit (problème de la date et heure) ?
    Le mieux est de récupérer l'ID du produit.

    Comment puis-je transférer produitID (123) de TS01 à TS04?

    Y a t' il un moyen de sauver, exporter, copier le contenu d'une variable d'un test suite à un autre ?
    ou je ne sais pas ... il y a peut être une autre solution?

    Je sais que c'est compliqué. J'espère que mon explication est claire.
    Si quelqu'un aurais des idées à proposer ... cela serait merveilleux

    A force de m'arracher les cheveux à trouver une solution, je deviens chauve.

    Merci d'avance
    André

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2015
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Solution trouvé.
    Bonjour à tous,
    J'ai trouvé la solution et j'aimerais la partager avec vous.

    J'écris les variables dans un fichier XML dans le test suite n° 1 et je lis le fichier XML avec le test suite n°2. On peut même modifier le contenu du fichier XML très facilement.

    Explication:


    En premier lieu, il faut ajouter un plug in dans Firefox : Selenium IDE - SelBlocks (pour les 2 instructions : ForXml et EndForXml)
    Ensuite, il faut ajouter une fonction dans le fichier "user-extensions.js": WriteData

    TextToSave : La ligne XML à sauver
    Location : Répertoire + Le nom du fichier. J'ai mis un exemple concret dans le code ci-dessous. Il faut ensuite remplacer mon exemple par "Location"

    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
    Selenium.prototype.doWriteData = function(TextToSave, Location){
    	
    	Components.utils.import("resource://gre/modules/NetUtil.jsm");
    	Components.utils.import("resource://gre/modules/FileUtils.jsm");
    	
            var data = TextToSave;
            var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        
    	file.initWithPath("C:\\Temp\\test.xml");   // Attention au "\\" il faut bien en mettre 2. autrement cela ne fonctionne pas
    
    	var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
            foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
    	
            var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
        
    	converter.init(foStream, "UTF-8", 0, 0);
            converter.writeString(data);
            converter.close();
    }
    Maintenant dans le Test case n° 1, nous allons écrire dans un fichier XML
    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
    31
    32
    33
    34
    35
    36
    37
    <!-- Je crée une chaine (XMLStr) qui va contenir tout mon XML -->
    <tr>
    	<td>store</td>
    	<td><SavedData></td>
    	<td>XMLStr</td>
    </tr>
    <!-- Répertoire et nom de fichier où sera sauvegardé le fichier XML -->
    <tr>
    	<td>store</td>
    	<td>file:///C:\\Temp\\test.xml</td>
    	<td>repertoire</td>
    </tr>
    <!-- Début du traitement du fichier XML
    <tr>
    	<td>forXml</td>
    	<td>${repertoire}</td>
    	<td></td>
    </tr>
    <!-- J'ajoute au contenu existant ma nouvelle ligne XML dans la chaine XMLStr -->
    <tr>
    	<td>store</td>
    	<td>${XMLStr}<vars ProduitID="${ProduitID}" Nom = "${Nom}" /></td>
    	<td>XMLStr</td>
    </tr>
    <!-- Je sauve le fichier XML -->
    <tr>
    	<td>writeData</td>
    	<td>${XMLStr}</SavedData></td>
    	<td>${repertoire}</td>
    </tr>
    <!-- Fin de code XML -->
    <tr>
    	<td>endForXml</td>
    	<td></td>
    	<td></td>
    </tr>
    Dans un autre test suite, nous allons lire le fichier XML

    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
    <tr>
    	<td>store</td>
    	<td>file:///C:\\Temp\\test.xml</td>
    	<td>repertoire</td>
    </tr>
    <!-- début de boucle de lecture -->
    <tr>
    	<td>forXml</td>
    	<td>${repertoire}</td>
    	<td></td>
    </tr>
    <tr>
    	<td>echo</td>
    	<td>Produit=${ProduitID} et Nom = ${Nom}</td>
    	<td></td>
    </tr>
    <!-- fin de boucle de lecture -->
    <tr>
    	<td>endForXml</td>
    	<td></td>
    	<td></td>
    </tr>
    Voilà. Chez moi, cela fonctionne très bien.
    Bonne fin d'après-midi

    André

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2015
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Oubli d'un point important
    Bonjour,
    Dans la réponse d'hier, j'ai malencontreusement oublié d'expliquer un point important.

    La syntaxe de la ligne dans le fichier XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <vars variable1=valeur variable2=valeur />
    Le nom du tag doit être obligatoirement "vars" en minuscule.
    Les noms des variables que vous passer sont sensible à la casse (majuscule, minuscule).

    Prudence.

    Vous pouvez passer autant de variables que vous voulez.
    Bonne journée

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

Discussions similaires

  1. récupération du contenu de variables
    Par Sebastien_INR59 dans le forum Access
    Réponses: 3
    Dernier message: 03/06/2006, 02h03
  2. Réponses: 6
    Dernier message: 23/05/2006, 14h28
  3. <div id=contenu> hauteur variable avec scroll
    Par camyo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/03/2006, 12h01
  4. Contenu des variables...
    Par jula dans le forum Linux
    Réponses: 5
    Dernier message: 13/04/2005, 18h44
  5. Appel de procédure par contenu de variable
    Par lil_jam63 dans le forum Langage
    Réponses: 9
    Dernier message: 13/09/2004, 09h05

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