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.
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.
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 Ensaios do produto.
Motivo dos problemas entre navegadores
- Incompatibilidade de tamanho de fonte em diferentes navegadores.
- JavaA implementação do script pode ser diferente.
- A diferença de validação de CSS e HTML pode estar presente.
- Alguns navegadores ainda não suportam HTML5.
- Alinhamento da página e tamanho do div.
- Orientação da imagem.
- 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,
Este testing.xml será mapeado com o Caso de teste que vai ficar assim
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
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>
OBSERVAÇÃO: Para executar o teste, clique com o botão direito no teste.xml, Selecione Executar como e clique em TestNG
Resumo
- O teste entre navegadores é uma técnica para testar aplicativos da web com diferentes navegadores.
- Selenium pode suportar diferentes tipos de ferramenta de teste em vários navegadores para automação.
- Selenium pode ser integrado com TestNG para realizar testes em vários navegadores.
- 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 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