Test tra browser diversi utilizzando Selenium webdriver

Test tra browser diversi utilizzando Selenium

Test tra browser è un tipo di test funzionale per verificare che la tua applicazione web funzioni come previsto nei diversi browser.

Test tra browser diversi utilizzando Selenium

Perché abbiamo bisogno del test su più browser?

Le applicazioni basate sul Web sono totalmente diverse da Windows applicazioni. Un'applicazione web può essere aperta in qualsiasi browser dall'utente finale. Ad esempio, alcune persone preferiscono aprire https://twitter.com in Firefox del browser, mentre altri possono usarlo Browser Chrome or IE.

Nel diagramma qui sotto puoi osservare che in IEla casella di accesso di Twitter non mostra curve in tutti gli angoli, ma siamo in grado di vederle nel browser Chrome.

Test tra browser

Dobbiamo quindi garantire che l'applicazione web funzioni come previsto in tutti i browser più diffusi in modo che più persone possano accedervi e utilizzarla.

Questo motivo può essere soddisfatto con Cross Browser Testing del prodotto.

Motivo Problemi tra browser diversi

  1. Mancata corrispondenza della dimensione del carattere nei diversi browser.
  2. JavaL'implementazione dello script può essere diversa.
  3. Può esserci una differenza di convalida CSS, HTML.
  4. Alcuni browser continuano a non supportare HTML5.
  5. Allineamento della pagina e dimensione div.
  6. Orientamento dell'immagine.
  7. Incompatibilità del browser con il sistema operativo. Eccetera.

Come eseguire test su più browser

Se stiamo usando Selenium WebDriver, possiamo automatizzare i casi di test utilizzando Internet Explorer, FireFox, Chrome, browser Safari.

Per eseguire casi di test con browser diversi sulla stessa macchina contemporaneamente possiamo integrarli TestNG quadro con Selenium WebDriver.

Il tuo testing.xml sarà simile a questo,

Test tra browser

Questo testing.xml verrà mappato con il file Test Case che sarà così

Test tra browser

Qui perché testing.xml ha due tag Test ("ChromeTest", "FirefoxTest'), questo caso di test verrà eseguito due volte per 2 browser diversi.

Il primo test "ChromeTest" trasmetterà il valore del parametro "browser" come "chrome" in modo che ChromeDriver venga eseguito. Questo caso di test verrà eseguito sul browser Chrome.

Seconda prova'FirefoxTest' trasmetterà il valore del parametro 'browser' come 'Firefox' COSÌ FirefoxIl driver verrà eseguito. Questo caso di test verrà eseguito su FireFox browser.

Guru99CrossBrowserScript.java

Codice completo:

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("http://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>

NOTA: Per eseguire il test, fare clic con il pulsante destro del mouse su test.xml, Selezionare Esegui come e fare clic TestNG

Test tra browser

Sommario

  1. Il Cross Browser Testing è una tecnica per testare un'applicazione Web con diversi browser Web.
  2. Selenium può supportare diversi tipi di strumento di test cross-browser per l'automazione.
  3. Selenium può essere integrato con TestNG per eseguire il test multi-browser.
  4. Dai parametri in testing.xml possiamo passare il nome del browser e, in un caso di test, possiamo creare di conseguenza un riferimento al WebDriver.

Nota: Il programma indicato è stato creato e testato su selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Se i programmi danno un errore, aggiornare il driver

Scarica la Selenium File di progetto per la demo in questo tutorial