Selenium - Prueba de múltiples navegadores

Los usuarios pueden ejecutar scripts en varios navegadores simultáneamente. Para la demostración, usaremos el mismo escenario que habíamos tomado para Selenium Grid. En el ejemplo de Selenium Grid, habíamos ejecutado los scripts de forma remota; aquí ejecutaremos los scripts localmente.

En primer lugar, asegúrese de haber descargado los controladores adecuados. Consulte el capítulo "Selenium Grid" para descargar los controladores de IE y Chrome.

Ejemplo

Para demostración, realizaremos la calculadora de porcentaje en todos los navegadores simultáneamente.

package TestNG;

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.testng.annotations.*;

public class TestNGClass {
   private WebDriver driver;
   private String URL = "http://www.calculator.net";

   @Parameters("browser")
   @BeforeTest
   public void launchapp(String browser) {

      if (browser.equalsIgnoreCase("firefox")) {
         System.out.println(" Executing on FireFox");
         driver = new FirefoxDriver();
         driver.get(URL);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         driver.manage().window().maximize();
      } else if (browser.equalsIgnoreCase("chrome")) {
         System.out.println(" Executing on CHROME");
         System.out.println("Executing on IE");
         System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
         driver = new ChromeDriver();
         driver.get(URL);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         driver.manage().window().maximize();
      } else if (browser.equalsIgnoreCase("ie")) {
         System.out.println("Executing on IE");
         System.setProperty("webdriver.ie.driver", "D:\\IEDriverServer.exe");
         driver = new InternetExplorerDriver();
         driver.get(URL);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         driver.manage().window().maximize();
      } else {
         throw new IllegalArgumentException("The Browser Type is Undefined");
      }
   }

   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();

      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();

      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");

      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");

      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr/td[2]/input")).click();

      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/span/font/b")).getText();		 

      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);

      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }

   @AfterTest
   public void closeBrowser() {
      driver.close();
   }
}

Cree un XML que nos ayude a parametrizar el nombre del navegador y no olvide mencionar paralelo = "tests" para ejecutarlo en todos los navegadores simultáneamente.

Ejecute el script haciendo clic derecho en el archivo XML y seleccione 'Ejecutar como' >> 'TestNG' Suite como se muestra a continuación.

Salida

Todo el navegador se lanzaría simultáneamente y el resultado se imprimiría en la consola.

Note - Para ejecutar en IE con éxito, asegúrese de que la casilla de verificación 'Habilitar modo protegido' en la pestaña de seguridad de 'Opción de IE' esté marcada o no en todas las zonas.

Los resultados de TestNG se pueden ver en formato HTML para un análisis detallado.