Tests multi-navigateurs utilisant Selenium pilote web
Tests multi-navigateurs utilisant Selenium
Test de navigateur croisรฉ est un type de test fonctionnel pour vรฉrifier que votre application Web fonctionne comme prรฉvu dans diffรฉrents navigateurs.
Pourquoi avons-nous besoin de tests multi-navigateurs ?
Les applications Web sont totalement diffรฉrentes de Windows applications. Une application Web peut รชtre ouverte dans n'importe quel navigateur par l'utilisateur final. Par exemple, certaines personnes prรฉfรจrent ouvrir https://twitter.com in Firefox navigateur, tandis que d'autres peuvent utiliser Navigateur Chrome or IE.
Dans le diagramme ci-dessous, vous pouvez observer que dans IE, la boรฎte de connexion de Twitter n'affiche pas de courbe ร tous les coins, mais nous pouvons la voir dans le navigateur Chrome.
Nous devons donc nous assurer que lโapplication Web fonctionnera comme prรฉvu dans tous les navigateurs courants afin que davantage de personnes puissent y accรฉder et lโutiliser.
Ce motif peut รชtre rรฉalisรฉ avec Cross Browser Tests du produit.
Raison des problรจmes entre navigateurs
- Incompatibilitรฉ de taille de police dans diffรฉrents navigateurs.
- JavaL'implรฉmentation du script peut รชtre diffรฉrente.
- La diffรฉrence de validation CSS et HTML peut รชtre lร .
- Certains navigateurs ne prennent toujours pas en charge HTML5.
- Alignement des pages et taille des div.
- Orientation des images.
- Incompatibilitรฉ du navigateur avec le systรจme d'exploitation. Etc.
Comment effectuer des tests multi-navigateurs
Si nous utilisons Selenium WebDriver, nous pouvons automatiser les cas de test en utilisant Internet Explorer, FireFox, Chrome, Safari.
Pour exรฉcuter des cas de test avec diffรฉrents navigateurs sur la mรชme machine en mรชme temps, nous pouvons intรฉgrer TestNG cadre avec Selenium Pilote Web.
Votre testing.xml ressemblera ร รงa,
Ce testing.xml correspondra au Cas de test qui ressemblera ร รงa
Ici parce que le testing.xml a deux balises de test (ยซ ChromeTest ยป, ยปFirefoxTest'), ce scรฉnario de test s'exรฉcutera deux fois pour 2 navigateurs diffรฉrents.
Le premier test ยซ ChromeTest ยป transmettra la valeur du paramรจtre ยซ navigateur ยป comme ยซ chrome ยป afin que ChromeDriver soit exรฉcutรฉ. Ce scรฉnario de test s'exรฉcutera sur le navigateur Chrome.
Deuxiรจme essai'FirefoxTest' transmettra la valeur du paramรจtre 'navigateur' comme 'Firefox' donc FirefoxLe pilote sera exรฉcutรฉ. Ce scรฉnario de test s'exรฉcutera sur FireFox navigateur.
Guru99CrossBrowserScript.java
Code:
package parallelTest;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class CrossBrowserScript {
WebDriver driver;
/**
* This function will execute before each Test tag in testng.xml
* @param browser
* @throws Exception
*/
@BeforeTest
@Parameters("browser")
public void setup(String browser) throws Exception{
//Check if parameter passed from TestNG is 'firefox'
if(browser.equalsIgnoreCase("firefox")){
//create firefox instance
System.setProperty("webdriver.gecko.driver", ".\\geckodriver.exe");
driver = new FirefoxDriver();
}
//Check if parameter passed as 'chrome'
else if(browser.equalsIgnoreCase("chrome")){
//set path to chromedriver.exe
System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
//create chrome instance
driver = new ChromeDriver();
}
//Check if parameter passed as 'Edge'
else if(browser.equalsIgnoreCase("Edge")){
//set path to Edge.exe
System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe");
//create Edge instance
driver = new EdgeDriver();
}
else{
//If no browser passed throw exception
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Test
public void testParameterWithXML() throws InterruptedException{
driver.get("https://demo.guru99.com/V4/");
//Find user name
WebElement userName = driver.findElement(By.name("uid"));
//Fill user name
userName.sendKeys("guru99");
//Find password
WebElement password = driver.findElement(By.name("password"));
//Fill password
password.sendKeys("guru99");
}
}
test.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="2" parallel="tests" > <test name="ChromeTest"> <parameter name="browser" value="Chrome" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> <test name="FirefoxTest"> <parameter name="browser" value="Firefox" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> <test name="EdgeTest"> <parameter name="browser" value="Edge" /> <classes> <class name="parallelTest.CrossBrowserScript"> </class> </classes> </test> </suite>
NOTE: Pour lancer le test, faites un clic droit sur l'icรดne test.xml, Sรฉlectionnez Exรฉcuter en tant que, puis cliquez sur TestNG
Rรฉsumรฉ
- Les tests multi-navigateurs sont une technique permettant de tester une application Web avec diffรฉrents navigateurs Web.
- Selenium peut prendre en charge diffรฉrents types de outil de test multi-navigateurs pour l'automatisation.
- Selenium peut รชtre intรฉgrรฉ avec TestNG pour effectuer des tests multi-navigateurs.
- ร partir des paramรจtres de testing.xml, nous pouvons transmettre le nom du navigateur et, dans un cas de test, nous pouvons crรฉer une rรฉfรฉrence WebDriver en consรฉquence.
ร noter: Le programme donnรฉ a รฉtรฉ construit et testรฉ sur Selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Si les programmes gรฉnรจrent une erreur, veuillez mettre ร jour le pilote
Tรฉlรฉchargez le Selenium Fichiers de projet pour la dรฉmo de ce didacticiel





