Pruebas entre navegadores usando Selenium Controlador web

⚡ Resumen inteligente

Pruebas entre navegadores usando Selenium WebDriver verifica que una aplicación web se comporte de manera consistente en Chrome, Firefox, Safari y Edge. Este tutorial muestra cómo combinar Selenium Controlador web con TestNG para iniciar sesiones paralelas, validar la representación y ampliar la cobertura en navegadores modernos de escritorio y móviles.

  • 🌐 Por qué es importante: Los usuarios reales abren la misma página en diferentes navegadores, por lo que el diseño, los scripts y los estilos deben funcionar correctamente en todas partes para proteger las conversiones y la accesibilidad.
  • 🧪 Selenium Configuración de WebDriver: Configure ChromeDriver, GeckoDriver, EdgeDriver y SafariDriver, y luego seleccione la instancia correcta mediante un único método parametrizado.
  • ???? TestNG ejecuciones paralelas: Un archivo testing.xml con parallel="tests" activa Chrome, Firefoxy las suites Edge al mismo tiempo, reduciendo los ciclos de retroalimentación para grandes paquetes de regresión.
  • ✅ Defectos comunes detectados: Escalado de fuentes, cambios de diseño CSS, JavaLas deficiencias en el polyfill de scripts, la compatibilidad con HTML5, la orientación de las imágenes y las discrepancias entre el sistema operativo y el navegador salen a la luz rápidamente.
  • 🛠️ Laboratorios en la nube e inteligencia artificial: Sauce Labs, BrowserStack y LambdaTest amplían la cobertura a miles de pares de sistema operativo y navegador, y la regresión visual basada en IA y los localizadores autorreparables aumentan la fiabilidad.

Pruebas entre navegadores en Selenium Controlador web

¿Por qué necesitamos pruebas entre navegadores?

Las aplicaciones web son muy diferentes de las aplicaciones de escritorio nativas. Una aplicación web puede ser abierta en cualquier navegador por el usuario final. Por ejemplo, algunas personas prefieren abrir https://twitter.com in Firefox, mientras que otros usan Chrome, Safari, o Microsoft Edge.

En el diagrama que aparece a continuación, se puede observar que en los navegadores antiguos, el cuadro de inicio de sesión de Twitter no muestra correctamente las esquinas redondeadas, mientras que la versión moderna de Chrome sí las muestra tal como fueron diseñadas.

Prueba de navegador cruzado

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

Este objetivo se puede lograr con Cross Browser. Pruebas del producto en todos los navegadores incluidos en el ámbito de aplicación.

Causas de los problemas de compatibilidad entre navegadores

  1. El tamaño de fuente no coincide en diferentes navegadores.
  2. JavaLas implementaciones del motor de scripts difieren en Chrome (V8), Firefox (Mono araña), Safari (JavaScriptCore) y Edge.
  3. Diferencias en la validación de CSS y HTML, incluido el manejo de prefijos de proveedor.
  4. Compatibilidad inconsistente o parcial con las funciones de HTML5 y ECMAScript en versiones antiguas de navegadores.
  5. Variaciones en la alineación de la página, el tamaño de los divs y la representación mediante flexbox o cuadrícula.
  6. Diferencias en la orientación de la imagen y el perfil de color.
  7. Incompatibilidad del navegador con el sistema operativo subyacente, incluyendo peculiaridades de WebView móvil en Android y iOS.

Cómo realizar pruebas en varios navegadores

Si estamos usando Selenium WebDriver, podemos automatizar casos de prueba contra Chrome, Firefox, Microsoft Edgey los navegadores Safari.

Para ejecutar casos de prueba con diferentes navegadores en la misma máquina al mismo tiempo, podemos integrar el TestNG marco con Selenium WebDriver. Para una mayor cobertura de sistemas operativos y versiones, el mismo conjunto de pruebas se puede conectar a plataformas en la nube como Sauce Labs, BrowserStack o LambdaTest mediante un punto final remoto de WebDriver.

Tu archivo testing.xml tendrá este aspecto:

Prueba de navegador cruzado

Este testing.xml se asignará con el Caso de prueba que tiene este aspecto:

Prueba de navegador cruzado

Debido a que testing.xml tiene múltiples etiquetas Test ('ChromeTest', 'FirefoxEste caso de prueba, denominado 'Test' o 'EdgeTest', se ejecutará una vez para cada navegador.

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

La segunda pruebaFirefoxPrueba' pasará el valor del parámetro 'navegador' como 'Firefox', entonces FirefoxEl controlador se ejecutará. Este caso de prueba se ejecutará en el Firefox Navegador. Agregar una prueba con Edge o Safari sigue el mismo patrón.

Guru99CrossBrowserScript.java

Paquete COMPLETE 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.openqa.selenium.safari.SafariDriver;
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 msedgedriver.exe
			System.setProperty("webdriver.edge.driver",".\\msedgedriver.exe");
			//create Edge instance
			driver = new EdgeDriver();
		}
		//Check if parameter passed as 'Safari'
		else if(browser.equalsIgnoreCase("Safari")){
			//SafariDriver ships with macOS, no driver path needed
			driver = new SafariDriver();
		}
		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");
	}
}

prueba.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="TestSuite" thread-count="3" 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 con el botón derecho en prueba.xml, seleccione Ejecutar como y haga clic TestNG Suite.

 Prueba de navegador cruzado

Escalado con Cloud Browser Grids

Correr Selenium WebDriver cubre localmente dos o tres navegadores, pero los usuarios reales acceden a sitios desde cientos de combinaciones de sistemas operativos y navegadores. Los laboratorios en la nube, como Laboratorios de salsa, BrowserStack, y LambdaTest exponer un punto final remoto de WebDriver. Apuntar el mismo Selenium Las pruebas se realizan en la red, se cumplen las capacidades requeridas para el navegador, la versión, el sistema operativo y la resolución, y el conjunto de pruebas se escala horizontalmente sin gestionar controladores locales.

Las cuadrículas modernas también ofrecen funciones asistidas por IA, como la comparación visual de regresión, los localizadores de elementos autorreparables y la puntuación de inestabilidad, lo que reduce los costes de mantenimiento en los conjuntos de pruebas de compatibilidad entre navegadores de larga duración.

Nota: El programa proporcionado fue construido y probado en Selenium 4, Cromo, Firefox, y Microsoft EdgeSi los programas dan un error, actualice los binarios del controlador para que coincidan con la versión de su navegador instalado o utilice Selenium Administrador que resuelve los controladores automáticamente.

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

Preguntas Frecuentes

Las pruebas entre navegadores son una técnica de prueba funcional y visual que verifica que una aplicación web funcione de la misma manera en Chrome, Firefox, Safari y Microsoft Edge En ordenadores de escritorio y dispositivos móviles, incluyendo diferentes sistemas operativos y tamaños de ventana gráfica.

Selenium WebDriver proporciona una única API que controla Chrome, FirefoxEdge y Safari a través del protocolo oficial W3C WebDriver. El mismo código de prueba se ejecuta en cualquier navegador, lo que facilita su uso. Selenium WebDriver es el estándar de facto para la automatización de navegadores y las pruebas de compatibilidad entre navegadores.

TestNG Utiliza el archivo testing.xml con parallel="tests" y thread-count para lanzar cada etiqueta Test en su propio hilo. Combinado con una configuración @BeforeTest parametrizada, el mismo Selenium El paquete WebDriver se ejecuta en Chrome, Firefoxy Edge simultáneamente, reduciendo el tiempo total de ejecución.

Sauce Labs, BrowserStack y LambdaTest ofrecen servicios de alojamiento. Selenium Cuadrículas que exponen miles de combinaciones de sistemas operativos y navegadores, incluyendo iOS Safari y Android Chrome. Apunte un RemoteWebDriver al punto final de la cuadrícula y pase las capacidades deseadas para ejecutar el mismo código a gran escala.

Los motores de regresión visual impulsados ​​por IA, como los integrados en Applitools, Percy y los módulos visuales de BrowserStack y LambdaTest, comparan capturas de pantalla semánticamente en lugar de píxel a píxel. Ignoran las diferencias esperadas de suavizado de bordes o representación de fuentes entre Chrome, Firefox, Safari y Edge, al tiempo que detectan regresiones de diseño genuinas, lo que reduce drásticamente los falsos positivos en las canalizaciones de pruebas entre navegadores.

Sí. Marcos de trabajo modernos como Healenium, Testim, Mabl y las características de IA en Selenium El IDE analiza el DOM y propone selectores XPath o CSS estables. Cuando un localizador falla debido a un cambio en la interfaz de usuario, los selectores generados por IA se autocorrigen evaluando los elementos cercanos y seleccionando la coincidencia más cercana, lo que mantiene las pruebas de compatibilidad entre navegadores en buen estado con menos mantenimiento manual.

Los defectos comunes incluyen discrepancias en la representación de fuentes y CSS, JavaInconsistencias del motor de scripts, compatibilidad rota con las funciones HTML5 o ES, problemas de orientación de imágenes, problemas de alineación de páginas, prefijos de proveedor faltantes y fallas específicas del sistema operativo en iOS Safari o Android Cromo.

Resumir este post con: