Test tra browser diversi utilizzando Selenium webdriver
โก Riepilogo intelligente
Test tra browser diversi utilizzando Selenium WebDriver verifica che un'applicazione web si comporti in modo coerente su Chrome, Firefox, Safari e Edge. Questa esercitazione mostra come combinare Selenium WebDriver con TestNG per avviare sessioni parallele, convalidare il rendering e scalare la copertura su browser desktop e mobili moderni.
Perchรฉ abbiamo bisogno del test su piรน browser?
Le applicazioni basate sul Web sono molto diverse dalle applicazioni desktop native. Un'applicazione Web puรฒ essere aperta in qualsiasi browser dall'utente finale. Ad esempio, alcune persone preferiscono aprire https://twitter.com in Firefox, mentre altri usano Chrome, Safari, o Microsoft Edge.
Nel diagramma sottostante si puรฒ osservare che nei browser meno recenti, la casella di accesso di Twitter non visualizza correttamente gli angoli arrotondati, mentre il Chrome moderno li visualizza come previsto.
Dobbiamo quindi assicurarci che l'applicazione web funzioni come previsto in tutti i browser piรน diffusi, in modo che un maggior numero di persone possa accedervi e utilizzarla.
Questo obiettivo puรฒ essere raggiunto con Cross Browser Collaudo del prodotto su ogni browser incluso nell'ambito di applicazione.
Motivi dei problemi di compatibilitร tra browser
- Mancata corrispondenza della dimensione del carattere nei diversi browser.
- JavaLe implementazioni del motore di script differiscono tra Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore) e Edge.
- Differenze nella validazione di CSS e HTML, inclusa la gestione dei prefissi dei fornitori.
- Supporto incoerente o parziale delle funzionalitร HTML5 ed ECMAScript nelle versioni meno recenti dei browser.
- Allineamento della pagina, dimensionamento dei div e varianti di rendering flexbox o a griglia.
- Differenze di orientamento dell'immagine e di profilo colore.
- Incompatibilitร del browser con il sistema operativo sottostante, inclusi i problemi di WebView mobile su Android e iOS.
Come eseguire test su piรน browser
Se stiamo usando Selenium WebDriver, possiamo automatizzare i casi di test contro Chrome, Firefox, Microsoft Edgee i browser Safari.
Per eseguire casi di test con browser diversi sulla stessa macchina contemporaneamente, possiamo integrare il TestNG quadro con Selenium WebDriver. Per una copertura piรน ampia di sistemi operativi e versioni, la stessa suite puรฒ essere indirizzata a piattaforme cloud come Sauce Labs, BrowserStack o LambdaTest tramite un endpoint WebDriver remoto.
Il tuo file testing.xml avrร questo aspetto:
Questo testing.xml verrร mappato con il file Test Case che ha questo aspetto:
Poichรฉ il file testing.xml contiene piรน tag Test ('ChromeTest', 'FirefoxTest', 'EdgeTest'), questo caso di test verrร eseguito una volta per ogni browser.
Il primo test, denominato 'ChromeTest', passerร il valore 'chrome' al parametro 'browser', pertanto verrร eseguito ChromeDriver. Questo caso di test verrร eseguito sul browser Chrome.
Il secondo test 'FirefoxTest' trasmetterร il valore del parametro 'browser' come 'Firefox', COSร FirefoxIl driver verrร eseguito. Questo caso di test verrร eseguito su Firefox browser. L'aggiunta di un test con Edge o Safari segue lo stesso schema.
Guru99CrossBrowserScript.java
Completato 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"); } }
test.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>
NOTA: Per eseguire il test, fare clic con il pulsante destro del mouse su test.xml, seleziona Esegui come e fai clic TestNG Suite.
Scalabilitร con Cloud Browser Grids
corsa Selenium WebDriver supporta localmente due o tre browser, ma gli utenti reali accedono ai siti da centinaia di combinazioni di sistemi operativi e browser. I laboratori cloud come Laboratori di salsa, BrowserStacke LambdaTest esporre un endpoint WebDriver remoto. Puntare lo stesso Selenium I test sulla griglia superano i requisiti di funzionalitร richiesti per browser, versione, sistema operativo e risoluzione, e la suite si adatta orizzontalmente senza necessitร di gestire driver locali.
Le griglie moderne mettono inoltre in evidenza funzionalitร supportate dall'IA, come il confronto visivo della regressione, i localizzatori di elementi auto-riparanti e la valutazione dell'instabilitร , che riducono i costi di manutenzione delle suite di test cross-browser a lungo termine.
Nota: Il programma fornito รจ stato costruito e testato su Selenium 4, Chrome, Firefoxe Microsoft EdgeSe i programmi restituiscono un errore, aggiornare i file binari del driver in modo che corrispondano alla versione del browser installata oppure utilizzare Selenium Gestore che risolve automaticamente i driver.
Scarica la Selenium File di progetto per la demo in questo tutorial





