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: