Cross Browser Testing folosind Selenium webdriver

Cross Browser Testing folosind Selenium

Testarea browserului รฎncruciศ™at este un tip de test funcศ›ional pentru a verifica dacฤƒ aplicaศ›ia dvs. web funcศ›ioneazฤƒ conform aศ™teptฤƒrilor รฎn diferite browsere.

Utilizarea de testare รฎncruciศ™atฤƒ de browser Selenium

De ce avem nevoie de testare รฎntre browsere?

Aplicaศ›iile bazate pe web sunt total diferite de Windows aplicatii. O aplicaศ›ie web poate fi deschisฤƒ รฎn orice browser de cฤƒtre utilizatorul final. De exemplu, unii oameni preferฤƒ sฤƒ deschidฤƒ https://twitter.com in Firefox browser-ul, รฎn timp ce altele pot fi folosite Chrome browser or IE.

รŽn diagrama de mai jos puteศ›i observa cฤƒ รฎn IE, caseta de conectare a Twitter nu aratฤƒ curba รฎn toate colศ›urile, dar o putem vedea รฎn browserul Chrome.

Testarea browserului รฎncruciศ™at

Aศ™adar, trebuie sฤƒ ne asigurฤƒm cฤƒ aplicaศ›ia web va funcศ›iona conform aศ™teptฤƒrilor รฎn toate browserele populare, astfel รฎncรขt mai mulศ›i oameni sฤƒ o poatฤƒ accesa ศ™i sฤƒ o utilizeze.

Acest motiv poate fi รฎndeplinit cu Cross Browser Testarea al produsului.

Motivul problemelor รฎntre browsere

  1. Dimensiunea fontului nepotrivitฤƒ รฎn diferite browsere.
  2. JavaImplementarea scriptului poate fi diferitฤƒ.
  3. Diferenศ›a de validare CSS,HTML poate fi acolo.
  4. Unele browsere รฎncฤƒ nu acceptฤƒ HTML5.
  5. Alinierea paginii ศ™i dimensiunea div.
  6. Orientarea imaginii.
  7. Incompatibilitate browser cu sistemul de operare. etc.

Cum sฤƒ faceศ›i testarea รฎncruciศ™atฤƒ a browserului

Dacฤƒ folosim Selenium WebDriver, putem automatiza cazurile de testare folosind Internet Explorer, FireFox, Chrome, browsere Safari.

Pentru a executa cazuri de testare cu browsere diferite รฎn aceeaศ™i maศ™inฤƒ รฎn acelaศ™i timp, putem integra TestNG cadru cu Selenium WebDriver.

testing.xml va arฤƒta aศ™a,

Testarea browserului รฎncruciศ™at

Acest testing.xml se va mapa cu Caz de testare care va arata asa

Testarea browserului รฎncruciศ™at

Aici, deoarece testing.xml are douฤƒ etichete Test (โ€žChromeTestโ€,โ€FirefoxTest'), acest caz de testare se va executa de douฤƒ ori pentru 2 browsere diferite.

Primul test โ€žChromeTestโ€ va trece valoarea parametrului โ€žbrowserโ€ ca โ€žchromeโ€, astfel รฎncรขt ChromeDriver va fi executat. Acest caz de testare va rula pe browserul Chrome.

Al doilea test 'FirefoxTestul va trece valoarea parametrului โ€žbrowserโ€ ca โ€žFirefox' asa de FirefoxDriverul va fi executat. Acest caz de testare va rula pe focFox browser-ul.

Guru99CrossBrowserScript.java

Cod complet:

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");
	}
}

testing.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>

NOTฤ‚: Pentru a rula testul, faceศ›i clic dreapta pe testing.xml, Selectaศ›i Executare ca ศ™i faceศ›i clic TestNG

 Testarea browserului รฎncruciศ™at

Rezumat

  1. Testarea รฎntre browsere este o tehnicฤƒ de testare a aplicaศ›iei web cu diferite browsere web.
  2. Selenium poate suporta diferite tipuri de instrument de testare cross-browser pentru automatizare.
  3. Selenium poate fi integrat cu TestNG pentru a efectua Testarea Multi Browser.
  4. Din parametrii din testing.xml putem trece numele browserului, iar รฎntr-un caz de testare, putem crea referinศ›ฤƒ WebDriver รฎn consecinศ›ฤƒ.

Notฤƒ: Programul dat a fost construit ศ™i testat pe selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Dacฤƒ programele dau o eroare, vฤƒ rugฤƒm sฤƒ actualizaศ›i driverul

Descฤƒrcaศ›i Selenium Fiศ™iere de proiect pentru demonstraศ›ia din acest tutorial

Rezumaศ›i aceastฤƒ postare cu: