Site icon Automation corner

Selenium 4 verzija je zvanično puštena!

Selenium 4 verzija je zvanično puštena početkom oktobra.

Prošao je dug period od beta verzije do samog zvaničnog release-a. Šta je novo i šta možemo da očekujemo od Selenium 4 verzije, saznaćete u ovom članku.

Sada kada je zvanično Selenium 4.0.0 verzija puštena, možemo reći da je proslo 5 godina od verzije 3.0.0

Iako je pet godina dug period, pogotovo u oblasti tehnologije, na novoj verziji se poprilično radilo, nova verzija je prošla i beta i alfa verziju, tako da ko je želeo mogao je da se upozna sa nekim novim funkcionalnostima koje pruža nova verzija. U novoj verziji rađeno je na poboljšanju na sva tri glavna razvojna stuba kod seleniuma, koja su:

  1. WebDriver – driver koji omogućava da selenium komunicira sa browserom (svaki browser ima svoj web driver: Chrome, FIrefox …)
  2. Selenium grid – omogućava paralernu egzekuciju auto testova, sa upotrebom različitih browsera u isto vreme, kao i egzekuciju remotly auto testova
  3. Selenium IDE (Integrated Development Environment) – Recording tool, snima manuelne test slučajeve i konvertuje ih u selenium kod


Nove funkcionalnosti i pogodnosti koje dolaze sa novom verzijom:

Relativni lokatori su prvenstveno ideja koja je implementirana u okviru sahi pro automation testing proizvoda, što je sada slično implementirano i za Selenium. Pronalaženje web elemenata, na novim web aplikacijama može da bude naporan posao, doći do specifičnog elementa nekada može da oduzme više vremena nego implementacija celog testa.

Primena relativnih lokatora je dodatna opcija koja bi trebalo da olakša pronalaženje web elemenata kao i bolju čitljivost u kodu.

Pre nego što prođemo relativne lokatore, prvo da se osvrnemo na osnovne lokatore koji se koriste.

Naziv lokatora
ID
CSS selektor
XPATH
Name
Link text
Partial link text
Tag name
Class name

Ovo su lokatori preko kojih pronalazimo web elemente, i ako ih ima 8 defiinisanih, često u praksi se koriste najviše tri lokatora:

1.Id 2. CSS Selektor 3. Xpath

Po id-u je najčešća preporuka da se traži, pošto se u DOM strukturi može najbrže locirati element. Samim tim test je optimalniji, a isto po standardu id je unique tako da kada tražite po id-u, lociraćete uglavnom po jedan web element i samim tim odstranićete mogućnost da po id-u dobijete više od jednog web elementa. Međutim, često na novim web aplikacijama id-evi nisu definisani. U tom slučaju najveću slobodu u lociranju omogućava CSS selektor i XPATH, pa je zato i njihova primena učestala, ali takođe njihovo korišćenje može da utiče na performanse kod testova (pogotovo kod xpath-a).

Nekada je preko osnovnih lokatora teško pronaći element, relativni lokatori bi tu trebalo da imaju ulogu u lakšem pronalaženju, tako što će preko definisanog web elementa pronaći sledeći element koji je u njegovoj blizini.

U sledećoj tabeli možemo da vidimo koje relativne lokatore imamo za korisčenje sa novom verzijom.

Seleniuma:

Relativni lokatori
above()
below()
toLeftOf()
toRightOf()
near()

Uz relativne lokatore možemo da pronađemo web element na osnovu položaja naspram trenutnog definisanog web elementa. Na primer, da imamo definisan web element button, ukoliko koristimo relativni lokator above, naći ćemo element koji je iznad elementa button, dok ako koristimo below naći ćemo element koji je ispod web elementa button. Near se malo razlikuje jer ukoliko koristimo near, pronaći će se najbliži element u blizini elementa button u razmaku do 50px.

Sledeći primer je kako bi izgledalo u kodu ako bismo koristili relativni lokator above(), primer je pisan u javi.

import static org.openqa.selenium.support.locators.RelativeLocator.with;

WebElement button = driver.findElement(By.id("btnConfirm"));
WebElement inputField = driver.findElement(with(By.tagName("input"))
.above(passwordField));

Objašnjenje:


WebDriver je je standardizovan u okviru W3C, to će dosta značiti za budući razvoj web drivera. WebDriver je srž funkcinalnosti seleniuma, WebDriver je prvi put primenjen u okviru verzije selenium 2. Pre toga selenium je funkcionisao kao web server koji je slao javaskript injection kako bi komunicirao sa browserom: WebDriver je pojednostavio stvari, on pretstavlja kljenta koji zasebno komunicira sa svakim browserom, svaki driver je zasebno razvijen za svaki browser pojedinačno (ChromeDriver, EdgeDriver, SafariDriver …). Razvoj drivera je rađen od strane browser development tima, tako da je dev tim koj razvija browser chrome, dorađivao i chrome web driver koji je komunicirao sa browserom. WebDriver je ranije komunicirao sa browserom koristeći JsonWireProtocol tada su postajali problemi koji se umanjuju pri W3C standardizaciji koristeći protokol

Raniji problemi su bili takvi da, s obzirom da je svaki tim je bio odgovran za svoj WebDriver, dešavalo se da na primer neki test koji je radio na chromeWeb driveru nije lepo radio na nekom drugom npr. Edge-u.
Standardizacijom takve probleme će umanjiti, dokumentaciju za W3C možete pronaći ovde


Olakšan je pristup browser autentifikacije za basic ili digest authetntication, sa selenium 4 verzijom može elegantno da se prosledi username i password, možete videti primer u code-u ispod:

((HasAuthentication) driver).register(() -> new UsernameAndPassword("admin", "password"));
driver.get("https://localhost/login");

U toku razvoja dešava se ponekad da je backend nestabilan i da su nam zbog toga samim tim i auto testovi nestabilni, i da su nam zbog toga takozvani flacky auto testovi, da nekada dobijemo timeout ili negativan response. Nova verzija koristi NetworkInterceptor koji nam omogucuva da direktno

modifikujemo response i samim tim mockujemo test ukoliko nam je to potrebno.


Od verzije 4 podržan je Chrome DevTools Protocol, to će nam omogućiti da u testovima možemo da koristimo mogućnosti koje nam pruža dev tools, kao što su console logs, networks, application cache i druge funkcinalnosti. Preko ove funkcionalnosti možemo dodatno da optimizujemo testove, a može da nam služi kao dodatna pomoć koja može da nam pomogne kako bi naš test pronašao neki problem (ako postoje neke nelogičnosti).


U starijoj verziji je bilo malo kompleksnije kada je u pitanju upravljanje sa više tabova i prozora. Sada je to pojednostavljeno, u jednoj liniji koda može lepo da se izdefiniše koristeći newWindow funkcionalnost.


Postoje razna pobojšanja što se tiće grida, primenili su pobojšanja koje su slično ranije primenjivali zalenium i selenoid

Novi Grid takođe sada podržava docker.


U jednom trenutku u starijim verzijama selenium je prestao da podržava IDE, međutim aplitools je pomogao kako se ne bi ugasio IDE i pomogao u redizajnu i poboljšanjima.

Sada postoji integrisani plugin za većinu popularnih browsera(Chrome, Edge, Firefox)

Sam interfejs je poboljsan i intuitivniji je.
Podržava mogućnost snimljenje interakcije za većinu popularnih programskih jezika (Java, Java Script, Python, C#)


Pored novih feature-a unapređena je i dokumentacija, ažurirana je sa novim funkcionalnostitma koju pruža nova verzija. Znatno je preglednija i sadrži više informacija.
Link ka dokumentaciji možete naći ovde


Korišćeni web resursi:

Exit mobile version