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 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.
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
- Incompatibilidade de tamanho de fonte em diferentes navegadores.
- JavaAs implementaรงรตes do mecanismo de script diferem no Chrome (V8), Firefox (Macaco-aranha), Safari (JavaScriptCore) e Edge.
- Diferenรงas na validaรงรฃo de CSS e HTML, incluindo o tratamento de prefixos de fornecedores.
- Suporte inconsistente ou parcial aos recursos HTML5 e ECMAScript em versรตes mais antigas do navegador.
- Alinhamento de pรกgina, dimensionamento de divs e variaรงรตes de renderizaรงรฃo em flexbox ou grid.
- Diferenรงas na orientaรงรฃo da imagem e no perfil de cores.
- 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:
Este testing.xml serรก mapeado com o Caso de teste que se parece com isto:
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.
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




