Teste entre navegadores usando Selenium webdriver

โšก Resumo Inteligente

Teste entre navegadores usando Selenium O WebDriver verifica se um aplicativo da web se comporta de forma consistente no Chrome. FirefoxSafari e Edge. Este tutorial demonstra como combinar Selenium WebDriver com TestNG Para iniciar sessรตes paralelas, validar a renderizaรงรฃo e dimensionar a cobertura em navegadores modernos para desktop e dispositivos mรณveis.

  • ๐ŸŒ Por que isso รฉ importante: Usuรกrios reais abrem a mesma pรกgina em navegadores diferentes, portanto, layouts, scripts e estilos devem ser consistentes em todos os navegadores para proteger as conversรตes e a acessibilidade.
  • ๐Ÿงช Selenium Configuraรงรฃo do WebDriver: Configure o ChromeDriver, o GeckoDriver, o EdgeDriver e o SafariDriver e, em seguida, selecione a instรขncia correta por meio de um รบnico mรฉtodo parametrizado.
  • ๐Ÿ“ฑ TestNG Execuรงรตes paralelas: Um arquivo testing.xml com parallel="tests" executa o Chrome. Firefoxe os pacotes Edge simultaneamente, reduzindo os ciclos de feedback para grandes pacotes de regressรฃo.
  • โœ… Defeitos comuns detectados: Dimensionamento de fontes, alteraรงรตes de layout CSS, JavaLacunas no preenchimento de scripts, suporte a HTML5, orientaรงรฃo de imagens e incompatibilidades entre sistemas operacionais e navegadores vรชm ร  tona rapidamente.
  • ๐Ÿ› ๏ธ Laboratรณrios em nuvem e IA: A Sauce Labs, a BrowserStack e a LambdaTest ampliam a cobertura para milhares de pares de sistemas operacionais e navegadores, e a regressรฃo visual orientada por IA e os localizadores de autorreparaรงรฃo aumentam a confiabilidade.

Testes de compatibilidade entre navegadores em Selenium webdriver

Por que precisamos de testes entre navegadores?

Os aplicativos baseados na web sรฃo muito diferentes dos aplicativos nativos para desktop. Um aplicativo web pode ser aberto em qualquer navegador pelo usuรกrio final. Por exemplo, algumas pessoas preferem abrir https://twitter.com in Firefoxenquanto outros usam Chrome, Safรกri, ou Microsoft Edge.

No diagrama abaixo, vocรช pode observar que, em navegadores mais antigos, a caixa de login do Twitter nรฃo renderiza os cantos arredondados corretamente, enquanto o Chrome moderno renderiza os cantos conforme o esperado.

Teste entre navegadores

Portanto, precisamos garantir que o aplicativo web funcione conforme o esperado em todos os navegadores populares, para que mais pessoas possam acessรก-lo e utilizรก-lo.

Esse objetivo pode ser alcanรงado com a compatibilidade entre navegadores. Testes do produto em todos os navegadores abrangidos.

Motivos para problemas de compatibilidade entre navegadores

  1. Incompatibilidade de tamanho de fonte em diferentes navegadores.
  2. JavaAs implementaรงรตes do mecanismo de script diferem no Chrome (V8), Firefox (Macaco-aranha), Safari (JavaScriptCore) e Edge.
  3. Diferenรงas na validaรงรฃo de CSS e HTML, incluindo o tratamento de prefixos de fornecedores.
  4. Suporte inconsistente ou parcial aos recursos HTML5 e ECMAScript em versรตes mais antigas do navegador.
  5. Alinhamento de pรกgina, dimensionamento de divs e variaรงรตes de renderizaรงรฃo em flexbox ou grid.
  6. Diferenรงas na orientaรงรฃo da imagem e no perfil de cores.
  7. Incompatibilidade do navegador com o sistema operacional subjacente, incluindo peculiaridades do WebView em dispositivos mรณveis. Android e iOS.

Como fazer testes entre navegadores

Se estivermos usando Selenium Com o WebDriver, podemos automatizar casos de teste no Chrome. Firefox, Microsoft Edgee navegadores Safari.

Para executar casos de teste com diferentes navegadores na mesma mรกquina ao mesmo tempo, podemos integrar o TestNG quadro com Selenium WebDriver. Para uma cobertura mais ampla de sistemas operacionais e versรตes, o mesmo conjunto de ferramentas pode ser direcionado para plataformas de nuvem como Sauce Labs, BrowserStack ou LambdaTest por meio de um endpoint WebDriver remoto.

Seu arquivo testing.xml ficarรก assim:

Teste entre navegadores

Este testing.xml serรก mapeado com o Caso de teste que se parece com isto:

Teste entre navegadores

Porque o arquivo testing.xml possui vรกrias tags Test ('ChromeTest', 'FirefoxTeste', 'EdgeTest'), este caso de teste serรก executado uma vez para cada navegador.

O primeiro teste, 'ChromeTest', passarรก o valor do parรขmetro 'browser' como 'chrome', portanto o ChromeDriver serรก executado. Este caso de teste serรก executado no navegador Chrome.

O 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. Adicionar um teste no Edge ou no Safari segue o mesmo padrรฃo.

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

testando.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>

OBSERVAร‡รƒO: Para executar o teste, clique com o botรฃo direito do mouse em testando.xmlSelecione "Executar como" e clique em TestNG Suite.

 Teste entre navegadores

Escalando com grades de navegadores na nuvem

Corrida Selenium O WebDriver abrange localmente dois ou trรชs navegadores, mas usuรกrios reais acessam sites a partir de centenas de combinaรงรตes de sistemas operacionais e navegadores. Laboratรณrios em nuvem, como... Laboratรณrios de molho, BrowserStack e LambdaTest Exponha um endpoint WebDriver remoto. Aponte para o mesmo. Selenium Os testes na grade garantem as funcionalidades desejadas para o navegador, versรฃo, sistema operacional e resoluรงรฃo, e o conjunto de testes รฉ escalรกvel horizontalmente sem a necessidade de gerenciar drivers locais.

As grades modernas tambรฉm apresentam recursos assistidos por IA, como comparaรงรฃo visual de regressรฃo, localizadores de elementos com autorreparaรงรฃo e pontuaรงรฃo de instabilidade, o que reduz a sobrecarga de manutenรงรฃo em conjuntos de testes de compatibilidade entre navegadores de longa duraรงรฃo.

Observaรงรฃo: O programa em questรฃo foi desenvolvido e testado em Selenium 4, Chrome, Firefox e Microsoft EdgeSe os programas apresentarem um erro, atualize os binรกrios do driver para corresponder ร  versรฃo do navegador instalada ou use Selenium Gerenciador que resolve problemas de drivers automaticamente.

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

Perguntas Frequentes

O teste de compatibilidade entre navegadores รฉ uma tรฉcnica de teste funcional e visual que verifica se um aplicativo web funciona da mesma maneira no Chrome. Firefox, Safรกri e Microsoft Edge em computadores e dispositivos mรณveis, incluindo diferentes sistemas operacionais e tamanhos de tela.

Selenium O WebDriver fornece uma API รบnica que controla o Chrome. Firefox, Edge e Safari atravรฉs do protocolo oficial WebDriver da W3C. O mesmo cรณdigo de teste funciona em qualquer navegador, o que torna Selenium WebDriver รฉ o padrรฃo de facto para automaรงรฃo de navegadores e testes de compatibilidade entre navegadores.

TestNG Utiliza o arquivo testing.xml com parallel="tests" e thread-count para executar cada tag Test em sua prรณpria thread. Combinado com uma configuraรงรฃo parametrizada de @BeforeTest, o mesmo Selenium O pacote WebDriver funciona no Chrome. Firefoxe Edge simultaneamente, reduzindo o tempo total de execuรงรฃo.

Sauce Labs, BrowserStack e LambdaTest oferecem serviรงos hospedados. Selenium Grades que expรตem milhares de combinaรงรตes de sistemas operacionais e navegadores, incluindo o Safari do iOS e Android Chrome. Aponte um RemoteWebDriver para o endpoint da grade e passe as funcionalidades desejadas para executar o mesmo cรณdigo em escala.

Mecanismos de regressรฃo visual baseados em IA, como os integrados ao Applitools, Percy e aos mรณdulos visuais do BrowserStack e LambdaTest, comparam capturas de tela semanticamente, em vez de pixel por pixel. Eles ignoram as diferenรงas esperadas de suavizaรงรฃo de serrilhado ou renderizaรงรฃo de fontes entre o Chrome, Firefox, Safari e Edge, ao mesmo tempo que detecta regressรตes de layout genuรญnas, o que reduz drasticamente os falsos positivos nos fluxos de trabalho de testes entre navegadores.

Sim. Frameworks modernos como o Healenium, Testim, Mabl, e os recursos de IA em Selenium O IDE analisa o DOM e propรตe seletores XPath ou CSS estรกveis. Quando um localizador deixa de funcionar devido a uma alteraรงรฃo na interface do usuรกrio, os seletores gerados por IA se autorreparam, avaliando os elementos prรณximos e escolhendo a correspondรชncia mais prรณxima. Isso mantรฉm os conjuntos de testes de compatibilidade entre navegadores funcionando corretamente, com menos manutenรงรฃo manual.

Os defeitos comuns incluem incompatibilidades de fontes e renderizaรงรฃo de CSS. JavaInconsistรชncias no mecanismo de script, suporte quebrado a recursos HTML5 ou ES, problemas de orientaรงรฃo de imagem, problemas de alinhamento de pรกgina, prefixos de fornecedor ausentes e falhas especรญficas do sistema operacional no Safari do iOS ou Android Chrome.

Resuma esta postagem com: