2010-05-10 3 views
4

J'écris des scripts au sélénium sur une application web complexe.Sélénium plus d'une baseUrl par classe de test

Pour utiliser un compte utilisateur, je dois d'abord m'inscrire en utilisant une URL, puis approuver le compte dans la console d'administration sur une autre URL. Le problème est qu'il existe un autre baseURL pour l'enregistrement et la console d'administration et j'en ai besoin dans un seul test. Mais lorsque j'utilise setBaseUrl dans mes tests, il est ignoré et l'ancien fichier URL de base est utilisé.

J'ai même appelé start() après cela, mais pas de changement ...

Y at-il un truc que je ne connais pas? Je suis en train de jouer et de déboguer pendant un certain temps sur ce problème, mais les tests de sélénium découplés (test < -> RCServer) ne facilitent pas le passage ... ;-)

+0

J'ai toujours pensé tests unitaires où fait sur votre couche de modèle, pas votre couche de vue. Y at-il une raison particulière pour laquelle vous effectuez des tests unitaires sur la couche de vue? Aussi un test unitaire est conçu pour tester une unité (méthode), pas une série de méthodes –

+0

les tests de couche de vue sont nécessaires parce que nous utilisons ces scripts pour assurer les fonctionnalités de base du produit après avoir construit une nouvelle version. Faire ces tâches à la main prend plus d'une heure et l'utilisation de sélénium nous permet de garder cela à ~ 5 minutes –

Répondre

3

Depuis que vous avez étiqueté ce sélénium-rc, je suppose que vous utilisez rc. Utilisez simplement deux instances distinctes de sélénium dans le client de test. Il n'y a aucune raison pour laquelle vous ne devriez avoir qu'une seule instance de sélénium dans une classe. C'est encore plus propre à mon avis puisque vous parlez à deux interfaces utilisateur différentes. Sur le serveur, vous n'avez toujours besoin que d'un seul. Le serveur lancera heureusement deux instances de navigateur si cela est demandé en utilisant deux instances de client.

Moritz

modifier: Pour ajouter ceci, une instance maintenant le sélénium peut être créé à tout moment avec

Selenium s = new DefaultSelenium("localhost", 4444, "*chrome", 
      "http://your-target-url"); 

En supposant que le serveur de sélénium est sur le port localhost 4444.

+0

idée très intéressante. Je vais essayer ça lundi –

1

OK Le sélénium ne semble pas être construit pour ce genre de flux de travail. J'ai divisé la classe de test en trois classes de test.

  1. Enregistrement de base en utilisant d'abord baseURL
  2. approbation à l'aide baseURL seconf
  3. tâches simples en utilisant d'abord baseURL à nouveau

Ce n'est pas aussi propre que d'avoir la substance contenue dans un testcase parce qu'il appartient ensemble de une perspective d'affaires. Mais au moins cela fonctionne et je n'ai pas à pirater le sélénium pour cela.

Questions connexes