Korištenje unakrsnog testiranja preglednika Selenium webdriver
⚡ Pametni sažetak
Korištenje unakrsnog testiranja preglednika Selenium WebDriver provjerava da li se web aplikacija ponaša dosljedno u Chromeu, Firefox, Safari i Edge. Ovaj vodič pokazuje kako kombinirati Selenium WebDriver sa TestNG za pokretanje paralelnih sesija, validaciju renderiranja i skaliranje pokrivenosti u modernim preglednicima za stolna računala i mobilne uređaje.

Zašto nam je potrebno unakrsno testiranje preglednika?
Web-aplikacije se uvelike razlikuju od izvornih desktop aplikacija. Krajnji korisnik može otvoriti web-aplikaciju u bilo kojem pregledniku. Na primjer, neki ljudi radije otvaraju https://twitter.com in Firefox, dok drugi koriste krom, safari, ili Microsoft Edge.
Na donjem dijagramu možete vidjeti da u starijim preglednicima okvir za prijavu na Twitter ne prikazuje zaobljene kutove ispravno, dok moderni Chrome prikazuje kutove kako je zamišljeno.
Dakle, moramo osigurati da web aplikacija radi kako se očekuje u svim popularnim preglednicima, kako bi joj više ljudi moglo pristupiti i koristiti je.
Ovaj cilj se može ostvariti pomoću Cross Browsera. Ispitivanje proizvoda na svakom pregledniku u dosegu.
Razlozi za probleme s više preglednika
- Nepodudarnost veličine fonta u različitim preglednicima.
- JavaImplementacije skriptnih mehanizama razlikuju se u Chromeu (V8), Firefox (Pauk-majmun), Safari (JavaScriptCore) i Edge.
- Razlike u CSS i HTML validaciji, uključujući rukovanje prefiksom dobavljača.
- Nedosljedna ili djelomična podrška za HTML5 i ECMAScript značajke u starijim verzijama preglednika.
- Poravnanje stranice, promjena veličine div-a i varijacije renderiranja flexboxa ili mreže.
- Razlike u orijentaciji slike i profilu boja.
- Nekompatibilnost preglednika s temeljnim operativnim sustavom, uključujući nedostatke mobilnog WebViewa na Android i iOS.
Kako napraviti unakrsno testiranje preglednika
Ako koristimo Selenium WebDriver, možemo automatizirati testne slučajeve za Chrome, Firefox, Microsoft Edgei Safari preglednike.
Za izvršavanje testnih slučajeva s različitim preglednicima na istom računalu istovremeno, možemo integrirati TestNG okvir sa Selenium WebDriver. Za širu pokrivenost operativnih sustava i verzija, isti paket može se usmjeriti na cloud mreže kao što su Sauce Labs, BrowserStack ili LambdaTest putem udaljene krajnje točke WebDrivera.
Vaš testing.xml će izgledati ovako:
Ovaj testing.xml preslikat će se s Testni slučaj koji izgleda ovako:
Budući da datoteka testing.xml ima više oznaka Test ('ChromeTest', 'FirefoxTest', 'EdgeTest'), ovaj testni slučaj će se izvršiti jednom za svaki preglednik.
Prvi test 'ChromeTest' će proslijediti vrijednost parametra 'browser' kao 'chrome', pa će se izvršiti ChromeDriver. Ovaj testni slučaj će se pokrenuti u pregledniku Chrome.
Drugi test'FirefoxTest' će proslijediti vrijednost parametra 'browser' kao 'Firefox', dakle FirefoxVozač će se izvršiti. Ovaj testni slučaj će se pokrenuti na Firefox preglednik. Dodavanje Edge ili Safari testa slijedi isti obrazac.
Guru99CrossBrowserScript.java
potpun 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"); } }
testiranje.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>
NAPOMENA: Za pokretanje testa kliknite desnom tipkom miša na testiranje.xml, odaberite Pokreni kao i kliknite TestNG Apartman.
Skaliranje pomoću mreža preglednika u oblaku
Trčanje Selenium WebDriver lokalno pokriva dva ili tri preglednika, ali stvarni korisnici pristupaju stranicama iz stotina kombinacija operativnih sustava i preglednika. Cloud laboratoriji kao što su Laboratoriji za umake, BrowserStacki Lambda test otkriti udaljenu krajnju točku WebDrivera. Pokažite isto Selenium testovi na mreži, prosljeđuju željene mogućnosti za preglednik, verziju, OS i rezoluciju, a paket se skalira horizontalno bez upravljanja lokalnim upravljačkim programima.
Moderne mreže također ističu značajke potpomognute umjetnom inteligencijom kao što su vizualno regresijsko razlikovanje, lokatori elemenata za samoobnavljanje i bodovanje nestabilnosti, što smanjuje troškove održavanja dugotrajnih paketa za testiranje među preglednicima.
Bilješka: Navedeni program je izgrađen i testiran na Selenium 4, Krom, Firefoxi Microsoft EdgeAko programi daju grešku, ažurirajte binarne datoteke upravljačkog programa kako bi odgovarale instaliranoj verziji vašeg preglednika ili koristite Selenium Upravitelj koji automatski rješava probleme s upravljačkim programima.
Preuzimanje Selenium Projektne datoteke za demo u ovom vodiču




