Test parallèle Selenium sur plusieurs navigateurs (JAVA)


J'ai été surpris de ne pas trouver de solution intelligente comment exécuter les tests Selenium webdriver en utilisant Selenium Grid mais en exécutant chaque test avec plusieurs navigateurs. De préférence, j'aimerais avoir une sorte de configuration (fichier ou codé en dur) où je peux spécifier tous les navigateurs que je veux que mes tests s'exécutent. Et puis chaque test serait exécuté sur chacun de ces navigateurs.

Je suppose qu'il est possible d'écrire votre propre testrunner et de placer une boucle itérant chaque échelon de test à travers tous les navigateurs. Mais peut-être quelqu'un connaît une solution plus élégante? Quelqu'un a fait cela?

PS J'ai trouvé des solutions qui conseillent de dupliquer les tests et de spécifier les paramètres du navigateur pour chaque test. Je n'en veux pas.

Author: Manu Koshe, 2014-10-15

3 answers

Je ne connais pas Selenium Grid, mais je sais que vous pouvez avoir Selenium ouvrir plusieurs navigateurs simultanément en exécutant chaque test sur un thread différent. Vous pouvez regarder dans pour cela.

 0
Author: Tuy, 2014-10-15 14:47:33

J'ai résolu cela de manière à spécifier un paramètre de navigateur différent pour chaque suite de TestNG.

 0
Author: Manu Koshe, 2015-01-15 14:33:54

Ce que je fais, c'est exécuter mon test au niveau de la classe puis créer un TestNG.xml puis à l'intérieur, spécifiez les classes que je souhaite exécuter et les navigateurs sur lesquels ils doivent s'exécuter. Donc, mon fichier TestNG ressemblerait à quelque chose comme:

    <?xml version="1.0" encoding="UTF-8"?>
<suite name = "suite1" verbose = "6" preserve-order="true" parallel = "false" thread-count="1">

    <test name = "Any Test">
    <parameter name = "browser" value ="chrome">
    <parameter name = "port" value = "5555">
    </parameter>
    </parameter>
        <classes>
             <class name = "name of class to run"/>      
        </classes>
    </test>
</suite>

Ensuite, parce que je cours sur Selenium Grid, je passe les paramètres du navigateur et du port dans mon code comme ceci:

@BeforeMethod()
    @Parameters({"browser","port"})
    public void launchBrowsers(String browser, String port) throws Exception {

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setBrowserName(browser);
        capabilities.setJavascriptEnabled(true);

        setSelenium(new RemoteWebDriver(new URL("http://localhost:".concat(port).concat("/wd/hub")), capabilities));

        getSelenium().get(baseUrl); 
        getSelenium().manage().window().maximize();             
    }

J'espère que cela aide

 0
Author: frass, 2015-01-15 16:08:11