2017-04-17 1 views
0

Je souhaite exécuter un fichier de caractéristiques dans trois navigateurs différents en même temps. Comment créer trois instances différentes de webdriver? et s'il vous plaît ajouter Comment faire la même chose pour deux fichiers de fonctionnalités différentes?Test croisé du navigateur dans le concombre

P.S. Je travaille sur le concombre avec java.

+0

Utilisez-vous testng ou junit? – Grasshopper

+0

J'utilise junit. –

Répondre

0

Lorsque vous mentionnez « trois navigateurs différents en parallèle » voulez-vous dire comme Chrome, Firefox et explorateur en cours d'exécution en parallèle OU trois différentes instances de Chrome ne.

Si c'est le deuxième cas réfèrent à cet article - https://opencredo.com/running-cucumber-jvm-tests-in-parallel/. La logique de base derrière ceci est de former des JVM séparées pour le nombre d'instances parallèles requises. Ceci est fait en utilisant le plugin Maven surefire.

Si le d'abord cas alors vous devrez modifier certains aspects. Le plugin transmet le «numéro de fork» à la JVM que vous pouvez utiliser pour instancier le pilote de navigateur spécifique à cette JVM.

J'utilise Java 8, junit 4.12, picocontainer for Dependency Injection, Maven 3 (ne fonctionne pas avec les versions inférieures comme « numéro fourchette » passe null), selenium 2.53 (u besoin de comprendre les changements de code pour Sélénium 3 si nécessaire dans la création du pilote) et les navigateurs Chrome and Firefox (vous devez ajouter code pour IE).

code

  1. Les modifications apportées à l'article ShareDriver.java de github - Ecraser le bloc statique avec cela et ajouter d'autres méthodes.
static { 
     instantiateDriver();   
     Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); 
} 

private static void instantiateDriver() { 

     //numFork will be passed in the maven command line or eclipse 
     //--- clean install -DnumFork=${surefire.forkNumber} 
     int browserType = Integer.parseInt(System.getProperty("numFork")); 

     System.out.println("BROWSER TYPE "+browserType); 

     if(browserType == 1) 
      instantiateChromeDriver(); 

     else if (browserType == 2) 
      instantiateFirefoxDriver(); 

     else if (browserType == 3) {  
      instantiateIEDriver(); 
     }  

    } 

    private static void instantiateIEDriver() { 
     //Implement this 
    } 

    private static void instantiateFirefoxDriver() { 

     REAL_DRIVER = new FirefoxDriver(); 
     REAL_DRIVER.manage().window().maximize(); 
    } 

    private static void instantiateChromeDriver() { 

     System.setProperty("webdriver.chrome.driver", "location of chromedriver.exe"); 
     ChromeOptions chop = new ChromeOptions(); 
     chop.addArguments("test-type"); 
     chop.addArguments("start-maximized"); 
     chop.addArguments("--disable-extensions"); 

     REAL_DRIVER = new ChromeDriver(chop); 
    } 
  1. Changements à feature files - Supprimez les balises. Modifier l'un des fichiers de fonctionnalités pour contenir d'autres étapes. Codez les nouvelles étapes dans la classe de définition d'étape.

  2. Modifications apportées à runner classes - Supprimez l'option d'étiquette de cucumberoptions, vous devrez peut-être ajouter une option de collage pour pointer vers votre classe de définition d'étape. Donc, les deux classes de coureurs sont effectivement les mêmes. Vous pouvez supprimer l'une des classes de coureur si vous le souhaitez. Sinon, les tests seront répétés deux fois dans chaque navigateur.

  3. pom.xml - Assurez-vous que le nombre de fourches défini (<surefire.fork.count>5</surefire.fork.count>) est plus que le nombre de navigateurs que vous utilisez. Sinon, la logique échouera.

Courir dans Maven - Vous pouvez exécuter à partir du plugin Eclipse en utilisant la commande clean install -DnumFork=${surefire.forkNumber} en option objectifs. Ou à partir de la ligne de commande en utilisant mvn clean install -DnumFork=${surefire.forkNumber}.

Ceci devrait exécuter tous les scénarios dans tous les fichiers de caractéristiques dans toutes les instances de navigateur. Vous pouvez affiner les options cucumber telles que les balises et les fonctions pour exécuter des scénarios ou des fichiers de fonctionnalités spécifiques.

+0

Je voulais dire le premier cas. –

0

Je choisirais d'exécuter la construction trois fois. Je définirais une variable d'environnement pour chaque exécution qui décide quel navigateur utiliser. Pour les exécuter en parallèle, j'écrirais un script shell qui définit la variable d'environnement et démarre trois exécutions.