Cross Browser Testing folosind Selenium webdriver
โก Rezumat inteligent
Cross Browser Testing folosind Selenium WebDriver verificฤ dacฤ o aplicaศie web se comportฤ consecvent รฎn Chrome, Firefox, Safari ศi Edge. Acest tutorial demonstreazฤ cum sฤ combinaศi Selenium WebDriver cu TestNG pentru a lansa sesiuni paralele, a valida randarea ศi a scala acoperirea pe browserele moderne pentru desktopuri ศi dispozitive mobile.

De ce avem nevoie de testare รฎntre browsere?
Aplicaศiile web sunt foarte diferite de aplicaศiile desktop native. O aplicaศie web poate fi deschisฤ รฎn orice browser de cฤtre utilizatorul final. De exemplu, unii oameni preferฤ sฤ deschidฤ https://twitter.com in Firefox, รฎn timp ce alศii folosesc Chrome, Safari, Microsoft Edge.
รn diagrama de mai jos puteศi observa cฤ รฎn browserele mai vechi, caseta de conectare a Twitter nu afiศeazฤ corect colศurile rotunjite, รฎn timp ce Chrome modern afiศeazฤ colศurile aศa cum este conceput.
Aศadar, trebuie sฤ ne asigurฤm cฤ aplicaศia web va funcศiona conform aศteptฤrilor รฎn toate browserele populare, astfel รฎncรขt mai mulศi oameni sฤ o poatฤ accesa ศi utiliza.
Acest obiectiv poate fi รฎndeplinit cu Cross Browser Testarea a produsului pe fiecare browser din domeniul de aplicare.
Motive pentru problemele cross-browser
- Dimensiunea fontului nepotrivitฤ รฎn diferite browsere.
- JavaImplementฤrile motorului de script diferฤ รฎn Chrome (V8), Firefox (Maimuศฤ Pฤianjen), Safari (JavaScriptCore) ศi Edge.
- Diferenศe รฎntre validarea CSS ศi HTML, inclusiv gestionarea prefixelor furnizorului.
- Compatibilitate inconsistentฤ sau parศialฤ cu funcศiile HTML5 ศi ECMAScript รฎn versiunile mai vechi de browser.
- Alinierea paginii, dimensionarea div-urilor ศi variaศiile de randare flexbox sau grilฤ.
- Diferenศe de orientare a imaginii ศi profil de culoare.
- Incompatibilitatea browserului cu sistemul de operare subiacent, inclusiv particularitฤศile WebView pentru mobil Android ศi iOS.
Cum sฤ faceศi testarea รฎncruciศatฤ a browserului
Dacฤ folosim Selenium WebDriver, putem automatiza cazurile de testare pentru Chrome, Firefox, Microsoft Edgeศi browserele Safari.
Pentru a executa cazuri de testare cu diferite browsere pe aceeaศi maศinฤ รฎn acelaศi timp, putem integra TestNG cadru cu Selenium WebDriver. Pentru o acoperire mai largฤ a sistemului de operare ศi a versiunilor, aceeaศi suitฤ poate fi direcศionatฤ cฤtre grile cloud precum Sauce Labs, BrowserStack sau LambdaTest printr-un endpoint WebDriver la distanศฤ.
Fiศierul testing.xml va arฤta astfel:
Acest testing.xml se va mapa cu Caz de testare care aratฤ astfel:
Deoarece fiศierul testing.xml are mai multe etichete Test (โChromeTestโ, โFirefoxTest', 'EdgeTest'), acest caz de testare se va executa o datฤ pentru fiecare browser.
Primul test โChromeTestโ va transmite valoarea parametrului โbrowserโ ca โchromeโ, deci ChromeDriver va fi executat. Acest caz de testare va rula pe browserul Chrome.
Al doilea testFirefoxTestul va trece valoarea parametrului โbrowserโ ca โFirefoxโ, deci FirefoxDriverul va fi executat. Acest caz de testare va rula pe Firefox browser. Adฤugarea unui test Edge sau Safari urmeazฤ acelaศi model.
Guru99CrossBrowserScript.java
Completa 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"); } }
testing.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>
NOTฤ: Pentru a rula testul, faceศi clic dreapta pe testing.xml, selectaศi Executare ca ศi faceศi clic pe TestNG Dupฤ.
Scalare cu grile de browser รฎn cloud
Alergare Selenium WebDriver acoperฤ local douฤ sau trei browsere, dar utilizatorii reali acceseazฤ site-uri din sute de combinaศii de sisteme de operare ศi browsere. Laboratoare cloud precum Laboratoarele de sos, BrowserStack ศi Test Lambda expuneศi un endpoint WebDriver la distanศฤ. Indicaศi acelaศi lucru Selenium testele la nivelul grilei, transmit capabilitฤศile dorite pentru browser, versiune, sistem de operare ศi rezoluศie, iar suita se scaleazฤ pe orizontalฤ fฤrฤ a gestiona driverele locale.
Grilele moderne includ, de asemenea, funcศii asistate de inteligenศฤ artificialฤ, cum ar fi diferenศierea vizualฤ de regresie, localizarea elementelor cu auto-reparare ศi scorarea instabilitฤศii, care reduc cheltuielile de รฎntreศinere pentru suitele de testare cross-browser de lungฤ duratฤ.
Notฤ: Programul dat a fost construit ศi testat pe Selenium 4, Crom, Firefox ศi Microsoft EdgeDacฤ programele dau o eroare, actualizaศi fiศierele binare ale driverelor pentru a se potrivi cu versiunea browserului instalat sau utilizaศi Selenium Manager care rezolvฤ automat driverele.
Descฤrcaศi Selenium Fiศiere de proiect pentru demonstraศia din acest tutorial




