Teste entre navegadores usando Selenium WebDriver

Teste entre navegadores usando Selenium

Teste entre navegadores é um tipo de teste funcional para verificar se sua aplicação web funciona conforme o esperado em diferentes navegadores.

Teste entre navegadores usando Selenium

Por que precisamos de testes entre navegadores?

Os aplicativos baseados na Web são totalmente diferentes dos Windows formulários. Uma aplicação web pode ser aberta em qualquer navegador pelo usuário final. Por exemplo, algumas pessoas preferem abrir https://twitter.com in Firefox browser, enquanto outros podem estar usando Navegador Chrome or IE.

No diagrama abaixo você pode observar que em IE, o login box do Twitter não é showing curva em todos os cantos, mas podemos vê-la no navegador Chrome.

Teste entre navegadores

Portanto, precisamos garantir que a aplicação web funcionará conforme esperado em todos os navegadores populares, para que mais pessoas possam acessá-la e utilizá-la.

Este motivo pode ser cumprido com Cross Browser ensaio do produto.

Motivo dos problemas entre navegadores

  1. Incompatibilidade de tamanho de fonte em diferentes navegadores.
  2. A implementação de JavaScript pode ser diferente.
  3. A diferença de validação de CSS e HTML pode estar presente.
  4. Alguns navegadores ainda não suportam HTML5.
  5. Alinhamento da página e tamanho do div.
  6. Orientação da imagem.
  7. Incompatibilidade do navegador com o sistema operacional. Etc.

Como fazer testes entre navegadores

Se estivermos usando Selenium WebDriver, podemos automatizar casos de teste usando o Internet Explorer, FireFox, Navegadores Chrome, Safari.

Para executar casos de teste com diferentes navegadores na mesma máquina ao mesmo tempo podemos integrar TesteNG estrutura com Selenium WebDriver.

Seu test.xml ficará assim,

Teste entre navegadores

Este testing.xml será mapeado com o Caso de teste que vai ficar assim

Teste entre navegadores

Aqui porque o testing.xml tem duas tags de teste ('ChromeTest','FirefoxTest'), este caso de teste será executado duas vezes para 2 navegadores diferentes.

O primeiro teste 'ChromeTest' passará o valor do parâmetro 'browser' como 'chrome' para que o ChromeDriver seja executado. Este caso de teste será executado no navegador Chrome.

Segundo teste 'FirefoxTest' passará o valor do parâmetro 'browser' como 'Firefox' então FirefoxO driver será executado. Este caso de teste será executado em FireFox browser.

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

testando.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 executar o teste, clique com o botão direito no teste.xml, Selecione Executar como e clique em TestNG

Teste entre navegadores

Resumo

  1. O teste entre navegadores é uma técnica para testar aplicativos da web com diferentes navegadores.
  2. O selênio pode suportar diferentes tipos de ferramenta de teste em vários navegadores para automação.
  3. O Selenium pode ser integrado ao TestNG para realizar testes em vários navegadores.
  4. A partir dos parâmetros em testing.xml podemos passar o nome do navegador e, em um caso de teste, podemos criar a referência WebDriver de acordo.

Nota: O programa fornecido foi construído e testado em Selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Borda 14.14393. Se os programas apresentarem erro, atualize o driver

Baixe os arquivos do projeto Selenium para a demonstração neste tutorial