web-dev-qa-db-fra.com

Comment boucler des tests dans Selenium IDE?

J'ai déjà testé Selenium IDE. C'est assez facile à utiliser, et j'ai créé quelques cas de test avec. J'ai cherché sur Google, essayant de trouver un moyen de répéter mes tests automatiquement. J'ai vu une solution avec gotolabel, des boucles while, etc. Mais je ne pouvais en faire fonctionner aucune. Quelqu'un peut-il me donner un conseil sur la manière de boucler mon test n fois, ou de boucler indéfiniment J'apprécie toute aide. 

35
Giordano Giuliano

Faire ceci:

  1. Téléchargez ce fichier js: https://github.com/darrenderidder/sideflow/blob/master/sideflow.js
  2. Lancez Selenium IDE depuis Firefox et ouvrez le menu des options.
  3. Téléchargez le fichier .js dans le champ "Selenium Core extensions (user-extensions.js)".

Le fichier js fournit la fonctionnalité de boucle goto, gotoIf et while dans Selenium IDE. L'exemple ci-dessous montre une boucle simple: 

<tr>
    <td>getEval</td>
    <td>index = 0;</td>
    <td></td>
</tr>
<tr>
    <td>while</td>
    <td>index &lt; 10;</td>
    <td></td>
</tr>
<tr>
    <td>storeEval</td>
    <td>index</td>
    <td>value</td>
</tr>
<tr>
    <td>echo</td>
    <td>${value}</td>
    <td></td>
</tr>
<tr>
    <td>getEval</td>
    <td>index++;</td>
    <td></td>
</tr>
<tr>
    <td>endWhile</td>
    <td></td>
    <td></td>
</tr>
45
Prashant Vadher

comme indiqué dans la réponse ci-dessus, installez l'extension utilisateur, ce qui ajoutera une fonctionnalité de boucle aux tests Selenium IDE. L'exemple ci-dessous montre une boucle simple:

<tr>
<td>getEval</td>
<td>index = 0;</td>
<td></td>
</tr>
<tr>
<td>while</td>
<td>index &lt; 10;</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>index</td>
<td>value</td>
</tr>
<tr>
<td>echo</td>
<td>${value}</td>
<td></td>
</tr>
<tr>
<td>getEval</td>
<td>index++;</td>
<td></td>
</tr>
<tr>
<td>endWhile</td>
<td></td>
<td></td>
</tr>
17
barry07

Utilisez le plug-in Flow Control pour Firefox . Après avoir redémarré Firefox, utilisez la commande label pour marquer un point dans le script et la commande gotolabel pour y accéder.

Par exemple:

enter image description here

Ou si vous préférez voir le code source, voici une étiquette:

<tr>
    <td>label</td>
    <td>start</td>  
    <td></td>
</tr>

Et ceci provoque le retour du point d’exécution à l’étiquette:

<tr>
    <td>gotolabel</td>
    <td>start</td>
    <td></td>
</tr>

Il existe d'autres commandes que vous pouvez voir sur la page du plug-in et documentées dans le projet Selenium IDE: Flow Control GitHub .

4
Steve HHH

Je suis nouveau dans Selenium (je viens juste de l'utiliser depuis quelques minutes). Après une recherche rapide sur "Selenium loop" sur Google, cette question se posait à stackoverflow.com. J'ai immédiatement sauté dans l'extension et commencé à utiliser des boucles. La réponse acceptée est très utile. Cependant, je voulais faire remarquer quelque chose d’autre aux autres nouveaux venus dans Sélénium (et trébucher sur cette page).

J'ai créé un test simple pour une page Web simple. J'ai ajouté une boucle pour que le test s'exécute indéfiniment (jusqu'à ce que je l'ait suspendu/arrêté). Cependant, j'ai remarqué qu'en faisant cela, les compteurs de cycles/échecs de l'interface graphique de Selenium ne sont pas incrémentés à chaque boucle (je devine, car un seul cas de test n'a jamais été terminé, il était en boucle indéfiniment). J'ai donc creusé un peu plus loin. Mon objectif était de laisser le même test en cours d'exécution pendant une longue période (quelques heures, voire toute la nuit) pour voir s'il y avait des échecs (je suis à la recherche d'un bogue intermittent pour le moment).

Le moyen le plus simple (pour moi, après quelques minutes de recherche/expérimentations) était de procéder comme suit (probablement qu'aucun plugin ne soit nécessaire, bien que le plugin attaché soit vraiment utile si vous souhaitez exécuter quelques petites boucles dans un scénario de test):

  • enregistrer le scénario de test dans un fichier texte
  • enregistrer la suite de tests dans un fichier texte
  • ouvrez le fichier texte de la suite de tests dans un éditeur de texte
  • copier et coller le scénario de test plusieurs fois dans la suite de tests (par exemple, mille fois)
  • puis ouvrez la suite de tests dans Selenium et lancez la suite de tests

Maintenant, j'ai la même suite de tests simples qui s'exécute plusieurs fois et les compteurs Runs/Failures s'incrémentent comme prévu (sans avoir besoin de boucles).

4
fuzion101

Le sélénium IDE a maintenant un contrôle de flux. Ces commandes de flux de contrôle fonctionnent en spécifiant des commandes d'ouverture et de fermeture pour désigner un ensemble (ou un bloc) de commandes.

Commandes disponibles

Voici chacune des commandes de flux de contrôle disponibles accompagnées de leurs commandes associées et/ou de fermeture.

if, else si, else, fin fois, fin do, répétez si while, end

Vous pouvez en lire plus ici:

https://www.seleniumhq.org/Selenium-ide/docs/en/introduction/control-flow/

0
Al Sargent

Pas besoin d'installer/télécharger quoi que ce soit, la commande intégrée times le fait très facilement:

  1. Insérez une nouvelle ligne au début de votre script, sélectionnez times en tant que Command et 10 (par exemple) en tant que Target.
  2. Faites défiler l'écran jusqu'en bas de votre script et ajoutez une nouvelle ligne avec end comme commande
  3. Appuyez sur le bouton "Exécuter" comme d'habitude.
  4. Vos commandes sont exécutées 10 fois.

Dans cet exemple, je clique sur un bouton 2000 fois:

 enter image description here

Pour boucler pour toujours, il suffit de remplacer 10 par un nombre extrêmement grand, ce qui prendra des siècles, ce qui est probablement aussi bon que jamais si vous exécutez Selenium IDE.

0
Nicolas Raoul

Ceci est un exemple pour l'utilisateur sampcop afin d'automatiser les plaintes de spam à l'aide des commandes label et goto Label:

1ère connexion sur spamcop.net 

2ème utilisation de l'option Signaler comme spam

3ème démarrer ce script

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://Selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="Selenium.base" href="http://www.spamcop.net/sc" />
<title>testecase</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">testecase</td></tr>
</thead><tbody>

<tr>
    <td>label</td>
    <td>target1</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Report Now</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>//input[@value='Send Spam Report(s) Now']</td>
    <td></td>
</tr>
<tr>
    <td>gotoLabel</td>
    <td>target1</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>
0
HelioSilva

Votre fichier de suite de tests est juste un fichier HTML, procédez comme suit:

<tr><td><a href="testCase1.html">testCase1</a></td></tr>
<tr><td><a href="sameStep.html">sameStep</a></td></tr>
<tr><td><a href="testCase2.html">testCase1</a></td></tr>
<tr><td><a href="sameStep.html">sameStep</a></td></tr>

0
Alexandre