Brauseriülene testimine, kasutades Selenium Veebidraiver

⚡ Nutikas kokkuvõte

Brauseriülene testimine, kasutades Selenium WebDriver kontrollib, kas veebirakendus käitub Chrome'is järjepidevalt. Firefox, Safari ja Edge. See õpetus näitab, kuidas ühendada Selenium WebDriver koos TestNG paralleelsete seansside käivitamiseks, renderdamise valideerimiseks ja ulatuse skaleerimiseks tänapäevastes lauaarvuti- ja mobiilibrauserites.

  • 🌐 Miks see on oluline: Päris kasutajad avavad sama lehe erinevates brauserites, seega peavad paigutused, skriptid ja stiilid kõikjal toimima, et kaitsta konversioone ja ligipääsetavust.
  • 🧪 Selenium WebDriveri seadistamine: Konfigureeri ChromeDriver, GeckoDriver, EdgeDriver ja SafariDriver ning seejärel vali ühe parameetriga meetodi abil õige eksemplar.
  • 📱 TestNG paralleelsed jooksud: Chrome'i käivitab fail testing.xml, mille puhul on rippmenüüs parallel=”tests”. Firefoxja Edge'i sviite samaaegselt, vähendades tagasiside tsükleid suurte regressioonipakettide puhul.
  • Levinumad avastatud vead: Fondi skaleerimine, CSS-i paigutuse nihutamine, JavaSkripti polütäidise lüngad, HTML5 tugi, pildi orientatsioon ja operatsioonisüsteemi ja brauseri mittevastavused ilmnevad kiiresti.
  • 🛠️ Pilvelaborid ja tehisintellekt: Sauce Labs, BrowserStack ja LambdaTest laiendavad leviala tuhandetele operatsioonisüsteemi ja brauseri paaridele ning tehisintellektil põhinev visuaalne regressioon ja isetervendavad lokaatorid suurendavad usaldusväärsust.

Brauseriteülene testimine Selenium Veebidraiver

Miks me vajame brauseritevahelist testimist?

Veebipõhised rakendused erinevad oluliselt natiivsetest töölauarakendustest. Lõppkasutaja saab veebirakenduse avada mis tahes brauseris. Näiteks eelistavad mõned inimesed avada https://twitter.com in Firefox, teised aga kasutavad Kroom, safarivõi Microsoft Edge.

Alloleval diagrammil on näha, et vanemates brauserites ei kuva Twitteri sisselogimisaken ümaraid nurki õigesti, samas kui tänapäevane Chrome kuvab nurki nii, nagu ette nähtud.

Ristbrauseri testimine

Seega peame tagama, et veebirakendus töötab ootuspäraselt kõigis populaarsetes brauserites, et rohkem inimesi saaks sellele juurde pääseda ja seda kasutada.

Seda eesmärki saab saavutada Cross Browseri abil Testimine toote igas hõlmatud brauseris.

Brauseriteüleste probleemide põhjused

  1. Erinevates brauserites ei sobi fondi suurus.
  2. JavaSkriptimootori implementatsioonid erinevad Chrome'is (V8), Firefox (Ämblik-Ahv), Safari (JavaScriptCore) ja Edge.
  3. CSS-i ja HTML-i valideerimise erinevused, sh tarnija eesliidete käsitlemine.
  4. Ebajärjekindel või osaline HTML5 ja ECMAScripti funktsioonide tugi vanemates brauseriversioonides.
  5. Lehekülje joondamine, div-elementide suuruse muutmine ja flexboxi või ruudustiku renderdamise variatsioonid.
  6. Kujutise orientatsioon ja värviprofiili erinevused.
  7. Brauseri ühildumatus aluseks oleva operatsioonisüsteemiga, sh mobiilse WebView'i iseärasused Android ja iOS.

Kuidas teha brauseritevahelist testimist

Kui me kasutame Selenium WebDriveriga saame automatiseerida testjuhtumeid Chrome'i vastu, Firefox, Microsoft Edgeja Safari brauserid.

Testide samaaegseks käivitamiseks erinevate brauseritega samal masinal saame integreerida TestNG raamistik koos Selenium WebDriver. Laiema operatsioonisüsteemide ja versioonide katvuse tagamiseks saab sama komplekti suunata pilvevõrkudesse, nagu Sauce Labs, BrowserStack või LambdaTest, WebDriveri kaug-lõpp-punkti kaudu.

Teie testing.xml näeb välja selline:

Ristbrauseri testimine

See testing.xml kaardistab failiga Testjuhtum mis näeb välja selline:

Ristbrauseri testimine

Kuna failil testing.xml on mitu testisilti („ChromeTest”, „Firefox„Test”, „EdgeTest”), see testijuhtum käivitatakse iga brauseri jaoks üks kord.

Esimene test 'ChromeTest' edastab parameetri 'browser' väärtuse 'chrome'-ina, seega käivitatakse ChromeDriver. See test töötab Chrome'i brauseris.

Teine katseFirefoxTest" edastab parameetri "brauser" väärtuse kui "Firefox', nii et FirefoxDraiver käivitatakse. See testjuhtum käivitatakse Firefox brauseris. Edge'i või Safari testi lisamine järgib sama mustrit.

Guru99CrossBrowserScript.java

täielik 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");
	}
}

testimine.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>

MÄRKUS: Testi käivitamiseks paremklõpsake testimine.xml, valige Käivita nimega ja klõpsake TestNG Sviit.

 Ristbrauseri testimine

Skaleerimine pilvebrauseri ruudustikega

Running Selenium WebDriver katab lokaalselt kahte või kolme brauserit, aga päris kasutajad pääsevad saitidele ligi sadadest operatsioonisüsteemide ja brauserite kombinatsioonidest. Pilvelaborid, näiteks Kastme laborid, BrowserStackja Lambda test paljastage kaug-WebDriveri lõpp-punkt. Osutage samale Selenium testid ruudustikus, läbivad brauseri, versiooni, operatsioonisüsteemi ja eraldusvõime soovitud võimalused ning komplekt skaleerub horisontaalselt ilma kohalikke draivereid haldamata.

Kaasaegsed ruudud pakuvad ka tehisintellekti abil toimivaid funktsioone, nagu visuaalse regressiooni eristamine, isetervendavate elementide lokaliseerimine ja ebastabiilsuse hindamine, mis vähendavad pikaajaliste brauseriteüleste testimiskomplektide hoolduskulusid.

Märge: Antud programm ehitati ja testiti Selenium 4, kroom, Firefoxja Microsoft EdgeKui programmid annavad vea, värskendage draiveri binaarfaile, et need vastaksid teie installitud brauseri versioonile või kasutage Selenium Haldur, mis lahendab draiverid automaatselt.

Lae alla Selenium Selle õpetuse demo projektifailid

KKK

Brauseriteülene testimine on funktsionaalne ja visuaalne testimistehnika, mis kontrollib, kas veebirakendus töötab Chrome'is samamoodi. Firefox, Safari ja Microsoft Edge nii lauaarvutites kui ka mobiilseadmetes, sh erinevates operatsioonisüsteemides ja vaatevälja suurustes.

Selenium WebDriver pakub ühte API-t, mis Chrome'i käitab, Firefox, Edge'i ja Safarit ametliku W3C WebDriver protokolli kaudu. Sama testkood töötab iga brauseri puhul, mis teeb Selenium WebDriver on brauserite automatiseerimise ja brauseriteülene testimine de facto standard.

TestNG kasutab iga Test-sildi käivitamiseks omaette lõimes faili testing.xml koos parallel=”tests” ja thread-count-iga. Koos parameetrilise @BeforeTest seadistusega on sama tulemus. Selenium WebDriveri komplekt töötab Chrome'is, Firefoxja Edge'i samaaegselt, lühendades üldist täitmisaega.

Sauce Labs, BrowserStack ja LambdaTest pakuvad hostitud Selenium Ruudustikud, mis paljastavad tuhandeid operatsioonisüsteemide ja brauserite kombinatsioone, sealhulgas iOS Safari ja Android Chrome. Suuna RemoteWebDriver võrgu lõpp-punkti ja edasta soovitud võimalused sama koodi suuremahuliseks käitamiseks.

Tehisintellektil põhinevad visuaalse regressiooni mootorid, näiteks need, mis on sisse ehitatud Applitoolsi, Percysse ja BrowserStacki ning LambdaTesti visuaalsetesse moodulitesse, võrdlevad ekraanipilte semantiliselt, mitte pikslihaaval. Need ignoreerivad eeldatavaid silumise või fondi renderdamise erinevusi Chrome'i, Firefox, Safaris ja Edge'is, püüdes samal ajal kinni ehtsaid paigutuse regressioone, mis vähendab järsult valepositiivseid tulemusi brauseritevahelise testimise käigus.

Jah. Moodsad raamistikud, näiteks Healenium, Testim, Mabl ja tehisintellekti funktsioonid Selenium IDE analüüsib DOM-i ja pakub stabiilseid XPath- või CSS-selektoreid. Kui lokaator UI-muudatuse tõttu katki läheb, siis tehisintellekti loodud selektorid parandavad end ise, hinnates lähedalasuvaid elemente ja valides lähima vaste, mis hoiab brauseritevahelise testimise komplektid keskkonnasõbralikud ja nõuab vähem käsitsi hooldust.

Levinud vigade hulka kuuluvad fondi ja CSS-i renderdamise mittevastavused, JavaSkriptimootori ebakõlad, vigane HTML5 või ES funktsioonide tugi, pildi orientatsiooni probleemid, lehe joondusprobleemid, puuduvad tarnija eesliited ja operatsioonisüsteemipõhised tõrked iOS Safaris või Android Chrome

Võta see postitus kokku järgmiselt: