Selaimien välinen testaus käyttäen Selenium web-ajuri

⚡ Älykäs yhteenveto

Selaimien välinen testaus käyttäen Selenium WebDriver varmistaa, että verkkosovellus toimii johdonmukaisesti Chromessa. Firefox, Safari ja Edge. Tässä opetusohjelmassa näytetään, miten voit yhdistää Selenium WebDriver kanssa TestNG rinnakkaisten istuntojen käynnistämiseksi, renderöinnin validoimiseksi ja kattavuuden skaalaamiseksi nykyaikaisissa työpöytä- ja mobiiliselaimissa.

  • 🌐 Miksi sillä on väliä: Oikeat käyttäjät avaavat saman sivun eri selaimissa, joten asettelujen, komentosarjojen ja tyylien on oltava kunnossa kaikkialla konversioiden ja saavutettavuuden suojaamiseksi.
  • 🧪 Selenium WebDriverin asennus: Määritä ChromeDriver, GeckoDriver, EdgeDriver ja SafariDriver ja valitse sitten oikea instanssi yhdellä parametrisoidulla metodilla.
  • 📱 TestNG rinnakkaisajot: Testing.xml-tiedosto, jossa on parallel=”tests”, käynnistää Chromen. Firefoxja Edge-sviittejä samanaikaisesti, mikä lyhentää palautesyklejä suurissa regressiopaketeissa.
  • Yleisiä havaittuja vikoja: Fontin skaalaus, CSS-asettelun muutokset, JavaKomentosarjojen polyfill-aukot, HTML5-tuki, kuvan suunta ja käyttöjärjestelmän ja selaimen yhteensopimattomuudet tulevat nopeasti esiin.
  • 🛠️ Pilvilaboratoriot ja tekoäly: Sauce Labs, BrowserStack ja LambdaTest laajentavat kattavuutta tuhansiin käyttöjärjestelmä-selain-pareihin, ja tekoälypohjainen visuaalinen regressio ja itsekorjaavat paikannustoiminnot parantavat luotettavuutta.

Selainten välinen testaus Selenium web-ajuri

Miksi tarvitsemme ristiinselaimen testausta?

Verkkopohjaiset sovellukset ovat hyvin erilaisia ​​kuin natiivit työpöytäsovellukset. Loppukäyttäjä voi avata verkkosovelluksen millä tahansa selaimella. Jotkut ihmiset esimerkiksi haluavat avata https://twitter.com in Firefox, kun taas toiset käyttävät kromi, safaritai Microsoft Edge.

Alla olevasta kaaviosta näet, että vanhemmissa selaimissa Twitterin kirjautumisikkuna ei näytä pyöristettyjä kulmia oikein, kun taas moderni Chrome näyttää kulmat suunnitellusti.

Ristiselaimen testaus

Joten meidän on varmistettava, että verkkosovellus toimii odotetulla tavalla kaikissa suosituissa selaimissa, jotta useammat ihmiset voivat käyttää sitä.

Tämä tavoite voidaan saavuttaa Cross Browserilla Testaus tuotteesta jokaisessa tarkastelualueeseen kuuluvassa selaimessa.

Syitä selainten välisiin ongelmiin

  1. Fonttikoko ei täsmää eri selaimissa.
  2. JavaSkriptimoottorien toteutukset vaihtelevat Chromessa (V8), Firefox (Hämähäkkiapina), Safari (JavaScriptCore) ja Edge.
  3. CSS- ja HTML-validoinnin erot, mukaan lukien toimittajan etuliitteiden käsittely.
  4. Epäjohdonmukainen tai osittainen HTML5- ja ECMAScript-ominaisuuksien tuki vanhemmissa selainversioissa.
  5. Sivun tasaus, div-elementtien koko ja flexbox- tai grid-renderöintivariaatiot.
  6. Kuvan suunta ja väriprofiilierot.
  7. Selaimen yhteensopimattomuus taustalla olevan käyttöjärjestelmän kanssa, mukaan lukien mobiililaitteiden WebView-ominaisuudet Android ja iOS.

Kuinka tehdä ristiinselaimen testaus

Jos käytämme Selenium WebDriver, voimme automatisoida testitapaukset Chromea vastaan, Firefox, Microsoft Edgeja Safari-selaimet.

Suorittaaksemme testitapauksia eri selaimilla samalla koneella samanaikaisesti, voimme integroida TestNG puitteet Selenium WebDriver. Laajemman käyttöjärjestelmä- ja versiokattavuuden saavuttamiseksi samaa ohjelmistopakettia voidaan ohjata pilvipohjaisiin grideihin, kuten Sauce Labsiin, BrowserStackiin tai LambdaTestiin, WebDriver-etäpäätepisteen kautta.

Testing.xml-tiedostosi näyttää tältä:

Ristiselaimen testaus

Tämä testing.xml yhdistää Testitapaus joka näyttää tältä:

Ristiselaimen testaus

Koska testing.xml-tiedostossa on useita Test-tageja ('ChromeTest', 'FirefoxTest', 'EdgeTest'), tämä testitapaus suoritetaan kerran kutakin selainta kohden.

Ensimmäinen testi 'ChromeTest' välittää parametrin 'browser' arvon muodossa 'chrome', joten ChromeDriver suoritetaan. Tämä testitapaus suoritetaan Chrome-selaimessa.

Toinen testiFirefoxTesti" välittää parametrin "selain" arvon muodossa "Firefox', joten FirefoxOhjain suoritetaan. Tämä testitapaus suoritetaan Firefox selaimessa. Edge- tai Safari-testin lisääminen noudattaa samaa kaavaa.

Guru99CrossBrowserScript.java

Täydellinen 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>

HUOMAUTUS: Suorittaaksesi testin, napsauta hiiren kakkospainikkeella testing.xml, valitse Suorita nimellä ja napsauta TestNG Sviitti.

 Ristiselaimen testaus

Skaalaus pilviselaimen ruudukoilla

Running Selenium WebDriver kattaa paikallisesti kaksi tai kolme selainta, mutta todelliset käyttäjät käyttävät sivustoja sadoilla eri käyttöjärjestelmä- ja selainyhdistelmillä. Pilvilaboratoriot, kuten Kastike Labs, Selainpinoja Lambdatesti paljastaa etä-WebDriver-päätepisteen. Osoita sama Selenium testit ruudukossa, läpäisevät halutut ominaisuudet selaimelle, versiolle, käyttöjärjestelmälle ja resoluutiolle, ja ohjelmisto skaalautuu horisontaalisesti ilman paikallisten ajureiden hallintaa.

Nykyaikaiset gridit sisältävät myös tekoälyllä ohjattuja ominaisuuksia, kuten visuaalisen regression erottelun, itsekorjautuvien elementtien paikannuksen ja epätasaisuuden pisteytyksen, jotka vähentävät pitkäikäisten selaintenvälisten testaussarjojen ylläpitokustannuksia.

Huomautus: Annettu ohjelma on rakennettu ja testattu Selenium 4, Kromi, Firefoxja Microsoft EdgeJos ohjelmat antavat virheen, päivitä ajuritiedostot vastaamaan asennettua selainversiotasi tai käytä Selenium Manager, joka ratkaisee ajurit automaattisesti.

Lataa Selenium Projektitiedostot esittelyä varten tässä opetusohjelmassa

UKK

Selaintenvälinen testaus on toiminnallinen ja visuaalinen testaustekniikka, joka varmistaa, että verkkosovellus toimii samalla tavalla Chromessa. Firefox, Safari ja Microsoft Edge tietokoneilla ja mobiililaitteilla, mukaan lukien eri käyttöjärjestelmät ja näyttöalueiden koot.

Selenium WebDriver tarjoaa yhden API:n, joka ohjaa Chromea, Firefox, Edgen ja Safarin kanssa virallisen W3C WebDriver -protokollan kautta. Sama testikoodi suoritetaan millä tahansa selaimella, mikä tekee Selenium WebDriver on tosiasiallinen standardi selainautomaatiolle ja selainten väliselle testaukselle.

TestNG käyttää testing.xml-tiedostoa, jossa on parallel="tests" ja thread-count käynnistääkseen jokaisen Test-tagin omassa säikeessään. Yhdessä parametrisoidun @BeforeTest-asennuksen kanssa sama Selenium WebDriver-paketti toimii Chromessa, Firefoxja Edgeä samanaikaisesti, mikä lyhentää kokonaissuoritusaikaa.

Sauce Labs, BrowserStack ja LambdaTest tarjoavat isännöityjä Selenium Ruudukot, jotka paljastavat tuhansia käyttöjärjestelmä- ja selainyhdistelmiä, mukaan lukien iOS Safari ja Android Chrome. Osoita RemoteWebDriver ruudukon päätepisteeseen ja välitä halutut ominaisuudet saman koodin suorittamiseksi skaalautuvasti.

Tekoälyllä toimivat visuaalisen regression moottorit, kuten Applitoolsin, Percyn ja BrowserStackin ja LambdaTestin visuaalisten moduulien sisäänrakennetut, vertailevat kuvakaappauksia semanttisesti pikseli pikseliltä -asetuksien sijaan. Ne jättävät huomiotta odotetut antialiasing- tai fontin renderöintierot Chromen, Firefox, Safarissa ja Edgessä samalla, kun ne havaitsevat aitoja asettelun regressioita, mikä vähentää merkittävästi vääriä positiivisia tuloksia selaintenvälisissä testausputkissa.

Kyllä. Nykyaikaiset kehykset, kuten Healenium, Testim, Mabl ja tekoälyominaisuudet Selenium IDE analysoi DOM:n ja ehdottaa vakaita XPath- tai CSS-valitsimia. Kun paikannin toimii virheellisesti käyttöliittymän muutoksen vuoksi, tekoälyn luomat valitsimet korjaavat itsensä pisteyttämällä lähellä olevia elementtejä ja valitsemalla lähimmän osuman, mikä pitää selainten välisen testauksen (Cross Browser Testing) toiminnassa ja vähentää manuaalista ylläpitoa.

Yleisiä vikoja ovat fontin ja CSS:n renderöinnin epäsuhta, JavaSkriptimoottorin epäjohdonmukaisuudet, rikkinäinen HTML5- tai ES-ominaisuuksien tuki, kuvien suuntaongelmat, sivun tasausongelmat, puuttuvat toimittajan etuliitteet ja käyttöjärjestelmäkohtaiset virheet iOS Safarissa tai Android Kromi.

Tiivistä tämä viesti seuraavasti: