Pruebas entre navegadores usando Selenium Controlador web

Pruebas entre navegadores usando Selenium

Prueba de navegador cruzado es un tipo de prueba funcional para comprobar que su aplicación web funciona como se espera en diferentes navegadores.

Pruebas entre navegadores usando Selenium

¿Por qué necesitamos pruebas entre navegadores?

Las aplicaciones basadas en web son totalmente diferentes de Windows aplicaciones. El usuario final puede abrir una aplicación web en cualquier navegador. Por ejemplo, algunas personas prefieren abrir https://twitter.com in Firefox navegador, mientras que otros pueden estar usando Navegador Chrome or IE.

En el siguiente diagrama se puede observar que en IE, el cuadro de inicio de sesión de Twitter no muestra una curva en todas las esquinas, pero podemos verla en el navegador Chrome.

Prueba de navegador cruzado

Por lo tanto, debemos asegurarnos de que la aplicación web funcione como se espera en todos los navegadores populares para que más personas puedan acceder a ella y utilizarla.

Este motivo se puede cumplir con Cross Browser. Pruebas del producto.

Motivo de los problemas entre navegadores

  1. El tamaño de fuente no coincide en diferentes navegadores.
  2. JavaLa implementación del script puede ser diferente.
  3. La diferencia de validación de CSS y HTML puede estar ahí.
  4. Algunos navegadores aún no son compatibles con HTML5.
  5. Alineación de página y tamaño de div.
  6. Orientación de la imagen.
  7. Incompatibilidad del navegador con el sistema operativo. Etc.

Cómo realizar pruebas en varios navegadores

Si estamos usando Selenium WebDriver, podemos automatizar casos de prueba utilizando Internet Explorer, FireFox, Chrome, navegadores Safari.

Para ejecutar casos de prueba con diferentes navegadores en la misma máquina al mismo tiempo podemos integrar TestNG marco con Selenium Controlador web.

Tu testing.xml se verá así,

Prueba de navegador cruzado

Este testing.xml se asignará con el Caso de prueba que se verá así

Prueba de navegador cruzado

Aquí porque testing.xml tiene dos etiquetas de prueba ('ChromeTest','FirefoxTest'), este caso de prueba se ejecutará dos veces para 2 navegadores diferentes.

La primera prueba, 'ChromeTest', pasará el valor del parámetro 'navegador' como 'chrome' para que se ejecute ChromeDriver. Este caso de prueba se ejecutará en el navegador Chrome.

Segunda prueba'FirefoxPrueba' pasará el valor del parámetro 'navegador' como 'Firefox' entonces FirefoxSe ejecutará el controlador. Este caso de prueba se ejecutará en FireFox navegador.

Guru99CrossBrowserScript.java

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

prueba.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: Para ejecutar la prueba, haga clic derecho en el prueba.xml, Seleccione Ejecutar como y haga clic TestNG

Prueba de navegador cruzado

Resum

  1. La prueba entre navegadores es una técnica para probar aplicaciones web con diferentes navegadores web.
  2. Selenium puede soportar diferentes tipos de herramienta de prueba de navegador cruzado para la automatización.
  3. Selenium se puede integrar con TestNG para realizar pruebas de múltiples navegadores.
  4. Desde los parámetros en testing.xml podemos pasar el nombre del navegador y, en un caso de prueba, podemos crear una referencia WebDriver en consecuencia.

Nota: El programa dado fue creado y probado en Selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 y Microsoft Edge 14.14393. Si los programas dan error, actualice el controlador.

Descargue nuestra Selenium Archivos de proyecto para la demostración en este tutorial