Test tra browser diversi utilizzando Selenium webdriver
Test tra browser diversi utilizzando Selenium
Test tra browser è un tipo di test funzionale per verificare che la tua applicazione web funzioni come previsto nei diversi browser.
Perché abbiamo bisogno del test su più browser?
Le applicazioni basate sul Web sono totalmente diverse da Windows applicazioni. Un'applicazione web può essere aperta in qualsiasi browser dall'utente finale. Ad esempio, alcune persone preferiscono aprire https://twitter.com in Firefox del browser, mentre altri possono usarlo Browser Chrome or IE.
Nel diagramma qui sotto puoi osservare che in IEla casella di accesso di Twitter non mostra curve in tutti gli angoli, ma siamo in grado di vederle nel browser Chrome.
Dobbiamo quindi garantire che l'applicazione web funzioni come previsto in tutti i browser più diffusi in modo che più persone possano accedervi e utilizzarla.
Questo motivo può essere soddisfatto con Cross Browser Testing del prodotto.
Motivo Problemi tra browser diversi
- Mancata corrispondenza della dimensione del carattere nei diversi browser.
- JavaL'implementazione dello script può essere diversa.
- Può esserci una differenza di convalida CSS, HTML.
- Alcuni browser continuano a non supportare HTML5.
- Allineamento della pagina e dimensione div.
- Orientamento dell'immagine.
- Incompatibilità del browser con il sistema operativo. Eccetera.
Come eseguire test su più browser
Se stiamo usando Selenium WebDriver, possiamo automatizzare i casi di test utilizzando Internet Explorer, FireFox, Chrome, browser Safari.
Per eseguire casi di test con browser diversi sulla stessa macchina contemporaneamente possiamo integrarli TestNG quadro con Selenium WebDriver.
Il tuo testing.xml sarà simile a questo,
Questo testing.xml verrà mappato con il file Test Case che sarà così
Qui perché testing.xml ha due tag Test ("ChromeTest", "FirefoxTest'), questo caso di test verrà eseguito due volte per 2 browser diversi.
Il primo test "ChromeTest" trasmetterà il valore del parametro "browser" come "chrome" in modo che ChromeDriver venga eseguito. Questo caso di test verrà eseguito sul browser Chrome.
Seconda prova'FirefoxTest' trasmetterà il valore del parametro 'browser' come 'Firefox' COSÌ FirefoxIl driver verrà eseguito. Questo caso di test verrà eseguito su FireFox browser.
Guru99CrossBrowserScript.java
Codice 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"); } }
test.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>
NOTA: Per eseguire il test, fare clic con il pulsante destro del mouse su test.xml, Selezionare Esegui come e fare clic TestNG
Sommario
- Il Cross Browser Testing è una tecnica per testare un'applicazione Web con diversi browser Web.
- Selenium può supportare diversi tipi di strumento di test cross-browser per l'automazione.
- Selenium può essere integrato con TestNG per eseguire il test multi-browser.
- Dai parametri in testing.xml possiamo passare il nome del browser e, in un caso di test, possiamo creare di conseguenza un riferimento al WebDriver.
Nota: Il programma indicato è stato creato e testato su selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Se i programmi danno un errore, aggiornare il driver
Scarica la Selenium File di progetto per la demo in questo tutorial