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é 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.
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
- El tamaño de fuente no coincide en diferentes navegadores.
- JavaLas implementaciones del motor de scripts difieren en Chrome (V8), Firefox (Mono araña), Safari (JavaScriptCore) y Edge.
- Diferencias en la validación de CSS y HTML, incluido el manejo de prefijos de proveedor.
- Compatibilidad inconsistente o parcial con las funciones de HTML5 y ECMAScript en versiones antiguas de navegadores.
- Variaciones en la alineación de la página, el tamaño de los divs y la representación mediante flexbox o cuadrícula.
- Diferencias en la orientación de la imagen y el perfil de color.
- 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:
Este testing.xml se asignará con el Caso de prueba que tiene este aspecto:
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.
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




