0

J'essaie de créer une grande suite de sélénium dans Firefox mais je me demande aussi combien il serait difficile de faire tous ces tests fonctionnant dans le Chrome ou IE même si la page est simplement rendu d'une manière différente et est déjà difficile de les relier et de faire fonctionner les autres pilotes.WebDriver - impossible de passer de FFDriver à ChromeDriver ou IEDriver

Une suggestion ou une expérience à partager? Merci d'avance, Lorenzo.

Répondre

0

J'ai trouvé que le sélénium n'est pas du tout compatible avec tous les navigateurs. Beaucoup de petites bizarreries empêchent un seul test de fonctionner correctement sur tous les navigateurs pris en charge. Bien sûr, cela dépend de la complexité des pages testées et de la complexité du code de test (je suppose que cela est codé et non enregistré).

Une solution possible consiste à créer une couche d'abstraction au-dessus des WebDrivers qui expose les actions courantes tout en normalisant le comportement en fonction de l'instance du navigateur (pensez à comment fonctionne jQuery).

+0

Cela n'a pas été mon expérience du tout. Il pourrait être utile que vous fournissiez des exemples concrets de «petits caprices qui empêchent un seul test de fonctionner correctement». – JimEvans

+0

"dépend de la complexité des pages testées". Je n'ai pas d'exemple avec moi (des exemples concrets ont été soumis comme rapports de bugs), mais j'ai un grand nombre de tests qui passent dans IE8 mais pas dans Firefox ou Chrome donc ce n'est pas mon imagination ou une observation frivole. – prestomanifesto

+0

Dans mon application, certaines zones de saisie sont développées de façon à ce que FF vous soit pour chaque boîte, 2 d'entre eux; un a montré et un caché et vous devez cliquer sur le chiffre montré sur la boîte de saisie réelle qui est caché, au lieu de Chrome, je peux juste voir le caché déjà visible et digitable. –

2

En général, ce type de scénario est un bon candidat pour le modèle de modèle. Combinez cela avec le modèle d'objet Page puisque vous utilisez Webdriver et vous devriez être en mesure de minimiser votre code dupliqué. L'idée est que vous créiez une sorte d'objet auxiliaire qui effectue des étapes couramment utilisées. La plupart des étapes sont les mêmes dans tous les navigateurs. Mais puisque votre interface utilisateur change en fonction du navigateur, certaines actions nécessitent des étapes personnalisées. Vous aurez donc des implémentations concrètes qui héritent de la plupart des étapes de la base abstraite, mais qui implémentent des fonctionnalités spécifiques dans lesquelles les différences de l'interface utilisateur rendent impossible la réutilisation du même code de base. Par exemple, sur la page où vous avez vos deux zones de saisie, votre implémentation firefox de l'action requise aurait deux clics alors que votre implémentation Chrome n'en aura qu'une. Les étapes de connexion et de navigation seront (théoriquement) identiques et peuvent être partagées via la classe de base.

Vous configurez vos objets d'assistance (fabrique de pages, etc.) dans la méthode SetUp de votre infrastructure de test. Vos tests appellent les méthodes appropriées sur les objets d'assistance pour effectuer les actions, puis vous vérifiez les résultats.

Références:

Questions connexes