Bonjour,

Je débute dans les tests automatisés. Je souhaite créer un fichier .bat (et/ou une ligne de commande) qui me permettrait de cibler un navigateur précis pour effectuer le test.
Ceci pour faciliter le changement de l'hôte ciblé pour les métiers Business et aussi pour permettre une utilisation dans un cadre CI/CD.J'exécute en parallèle plusieurs scripts Selenium sur différents hôtes via un fichier XML de configuration TestNG.

Voici le script Selenium (Java) qui permet de vérifier si l'hôte ciblé arrive bien sur Google et si le test arrive à s'exécuter sur SeleniumBox:

Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package crossBrowsers;
 
import java.net.URL;
 
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
 
public class VerifyTitle {
 
 
	RemoteWebDriver driver;
 
	@Test
	@Parameters("browser")
	public void verifypageTitle(String browserName) throws Exception {
 
 
		if (browserName.equalsIgnoreCase("SeleniumBoxChrome"))
		{
			DesiredCapabilities capabilities = new DesiredCapabilities();
			capabilities.setCapability("browserName","chrome");
			capabilities.setCapability("version", "60");
			capabilities.setCapability("e34:l_testName", "Susube test"); 
			long timeoutMs=5 *60 *1000; // 5 minutes       
			capabilities.setCapability("e34:per_test_timeout_ms", timeoutMs);
			capabilities.setCapability("video",true);
			capabilities.setCapability("e34_certAliases", new String []{"Root-CA", "Issuing-CA", "Proxy-root-CA", "Proxy-Intermediate-CA", "Proxy-Issuing-CA"});		
			capabilities.setCapability("e34:pacAlias", "de");			try {
			driver = new RemoteWebDriver(new URL("https://selenium-box.applications.services/wd/hub"), capabilities);
 
			} catch (Exception e) {
				// TODO Auto-generated catch block
 
				e.printStackTrace();
				throw e;
			}
 
		}
		else if (browserName.equalsIgnoreCase("SeleniumBoxFirefox"))
		{
			DesiredCapabilities capabilities = new DesiredCapabilities();
 
			capabilities.setCapability("browserName", "firefox");
			capabilities.setAcceptInsecureCerts(true);
			capabilities.setCapability("version", "60");
			capabilities.setCapability("e34:l_testName",  "Susube test");
			long timeoutMs = 5 *60 *1000;
			capabilities.setCapability("e34:per_test_timeout_ms", timeoutMs);
			capabilities.setCapability("video",true);
			capabilities.setCapability("e34_certAliases", new String []{"Root-CA", "Issuing-CA", "Proxy-root-CA", "Proxy-Intermediate-CA", "Proxy-Issuing-CA"});		
			capabilities.setCapability("e34:pacAlias", "de");			try {
			driver = new RemoteWebDriver(new URL("https://selenium-box.applications.services/wd/hub"), capabilities);
 
			} catch (Exception e) {
				// TODO Auto-generated catch block
 
				e.printStackTrace();
				throw e;
			}
 
		}	
 
		else if(browserName.equalsIgnoreCase("firefoxLocal"))
		{
			System.setProperty("webdriver.gecko.driver", "C:\\DRIVERS\\geckodriver.exe");
			driver = new FirefoxDriver();
 
		}
		else if (browserName.equalsIgnoreCase("chromeLocal"))
		{
			System.setProperty("webdriver.chrome.driver", "C:\\DRIVERS\\chromedriver.exe");
			driver = new ChromeDriver();
		}
		else if (browserName.equalsIgnoreCase("IELocal"))
		{
			System.setProperty("webdriver.ie.driver",  "C:\\DRIVERS\\IEDriverServer.exe");
			driver = new InternetExplorerDriver();
		}		
 
			//driver.manage().window().maximize();
			driver.get("https://www.google.com");			
			System.out.println(driver.getTitle());
			driver.quit();	
 
	}	
 
}

voici le fichier TestNG:

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
 
  <test name="FirefoxTestCases" enabled="true">
 
  <parameter name="browser" value="firefoxLocal"/>
  <classes>  
 
  <class name="crossBrowsers.VerifyTitle"/>
 
  </classes>
 
  </test> <!-- Test -->
 
 
  <test name="ChromeTestCases" enabled="false">
 
  <parameter name="browser" value="chromeLocal" />
  <classes>  
 
  <class name="crossBrowsers.VerifyTitle"/>
 
  </classes>
 
  </test>
 
 
  <test name="IETestCases" enabled="false">
 
  <parameter name="browser" value="IELocal"/>
  <classes>  
 
  <class name="crossBrowsers.VerifyTitle"/>
 
  </classes>
 
  </test>
 
 
  <test name="SeleniumBoxtestChromeCases" enabled="false">
 
  <parameter name="browser" value="SeleniumBoxChrome"/>
  <classes>
 
  <class name="crossBrowsers.VerifyTitle"/>
 
  </classes>
 
  </test>
 
  <test name="SeleniumBoxtestFirefoxCases" enabled="false">
 
  <parameter name="browser" value="SeleniumBoxFirefox"/>
  <classes>
 
  <class name="crossBrowsers.VerifyTitle"/>
 
  </classes>
 
  </test>
 
</suite> <!-- Suite -->


Donc comme vous pouvez le constater, pour pointer sur un hôte bien défini, il faut activer/désactiver le cas de test associé l'hôte ("enabled= true/false").

J'ai créé un premier fichier .bat qui me permet de lancer le framework mais je bloque sur la manière de paramétrer le choix du cas de test; c'est-à-dire que si je veux lancer sur Firefox en local, je mets juste un paramètre FirefoxLocal et ça va dans le fichier XML mettre le cas de test associé en "enabled = true" :
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
set projectLocation=C:\Users\susube\Documents\PerfectoAutomationNoInstall\workspace\Quantum_QMetry
cd %projectLocation%
set classpath=%projectLocation%\bin;%projectLocation%\lib\*
set anotherVariable=FirefoxLocal
 
(for /F "delims=" %%a in (testng.xml) do (
   set "line=%%a"
   set "newLine=!line:parameter>=!"
   if "!newLine!" neq "!line!" (
      set "newLine=<parameter>%anotherVariable%</parameter>"
   )
java org.testng.TestNG %projectLocation%\testng.xml
pause

Je vous remercie d'avance pour toute aide apportée sur mon problème.


Susube