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 navegador, enquanto outros podem estar usando Navegador Chrome or IE.

No diagrama abaixo vocรช pode observar que em IE, a caixa de login do Twitter nรฃo mostra curva em todos os cantos, mas podemos ver isso 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 Testes do produto.

Motivo dos problemas entre navegadores

  1. Incompatibilidade de tamanho de fonte em diferentes navegadores.
  2. JavaA implementaรงรฃo do script 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 Internet Explorer, FireFox, Navegadores Chrome, Safari.

Para executar casos de teste com diferentes navegadores na mesma mรกquina ao mesmo tempo podemos integrar TestNG quadro 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 no FireFox navegador.

Guru99CrossBrowserScript.java

Automaรงรฃo 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.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("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");
	}
}

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>

OBSERVAร‡รƒO: 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. Selenium pode suportar diferentes tipos de ferramenta de teste em vรกrios navegadores para automaรงรฃo.
  3. Selenium pode ser integrado com 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.

Observaรงรฃo: O programa fornecido foi construรญdo e testado em Selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Se os programas apresentarem erro, atualize o driver

Faรงa o download do Selenium Arquivos de projeto para demonstraรงรฃo neste tutorial

Resuma esta postagem com: