Selenium 3 i 4: avantatges, novetats i usos
Què és el Selenium i de què està format?
Per Nedim Yilmaz
Selenium és un conjunt d’eines per a fer proves web automatitzades. Està format per:
- Selenium IDE (Entorn de desenvolupament integrat); un complement de Firefox que funciona per a gravar i reproduir.
- Selenium RC (control remot) (1.0); és una eina de prova i s’utilitza per treballar en JavaScript permetent automatitzar aplicaciónes web. (2004)
- WebDriver (2.0); és un marc d’automatització web i li permet executar les seves proves en diferents navegadors. (2011)
- Selenium Grid; permet que les proves s’executin en paral·lel en diverses màquines.
Quins són els avantatges de Selenium?
- Selenium és de codi obert i d’ús gratuït sense cap cost de llicències.
- Suporta múltiples llenguatges com Java, Ruby, Python, C#…
- Admet proves de diversos navegadors.
- Té una bona quantitat de recursos i una comunitat d’ajuda.
- És compatible amb molts sistemes operatius com Windows, Mac, Linux…
- Interactua fàcilment amb l’aplicació web.
Quins són els desavantatges de Selenium?
- Selenium només admet aplicacions basades en navegadors web, no admet aplicacions basades en Windows.
- No té una eina d’informes integrada, necessita eines de tercers per a l’activitat de generació d’informes.
- No es pot treballar amb gràfics, captchas, codis de barres, formes.
- No és compatible amb la instal·lació de càrrega d’arxius.
- Difícil de dominar, requereix coneixements de nivell de desenvolupador.
- És difícil escriure bons localitzadors.
- Difícil de sincronitzar.
Quines són les limitacions de Selenium?
- No podem provar l’aplicació d’escriptori.
- No podem provar serveis web.
- Hem de fer ús de biblioteques i eines externes per a fer tasques com proves de Frameworks (TestNG, JUnit).
- Lectura des d’arxius externs (Apatxe POI per a excel).
- L’automatització de Captcha no és possible fent servir Selenium.
- No és compatible la càrrega d’arxius.
Quins tipus de proves automatitzem amb Selenium?
- Proves funcionals (positiu/negatiu, IU).
- Proves de fum (smoke tests).
- Proves de regressió.
- Proves d’integració.
- Proves d’extrem a extrem (end to end testing).
- Proves basadas en dades.
Què no fem amb Selenium?
- Rendiment, càrrega, proves d’estrès, proves ad hoc manuals.
- Proves de bases de dades pures (només provem la pròpia base de dades).
Diferències entre Selenium3 i Selenium 4
Estandardització W3C de Selenium WebDriver
En les versions anteriors de Selenium (és a dir, Selenium 3), el protocol JSON Wire era responsable de la comunicació entre el navegador web i el codi de prova. Això va conduir a la sobrecàrrega addicional de codificar i descodificar les sol·licituds de API utilitzant el protocol W3C. Això està configurat per a canviar amb WebDriver en Selenium 4, ja que les API de WebDriver adopten l’estandardització W3C.
Atès que els principals controladors de navegadors, com geckodriver, chromedriver, etc., segueixen l’estàndard W3C, WebDriver en Selenium 4 es comunicarà directament amb el navegador web.
Simplificació per a obrir noves finestres i pestanyes del navegador
Hi ha una sèrie d’escenaris en els quals li agradaria obrir un nou navegador (o pestanya) i realitzar un determinat conjunt d’accions a la finestra/pestanya recentment oberta. Amb Selenium 3 s’ha de crear un nou objecte Web Driver i després canviar a la nova finestra (o pestanya) fent servir la seva WindowHandle únic per a realitzar accions posteriors en aquesta finestra (o pestanya).
Selenium 4 proporciona una nova API newWindow que li permet crear una nova finestra (o pestanya) i canvia automàticament a ella. Atès que la nova finestra o pestanya es crea a la mateixa sessió, evita crear un nou objecte WebDriver.
Per a crear una nova pestanya amb Selenium 4 i canviar a ella, s’ha de passar WindowType.TAB al mètode newWindow(). Com cada finestra del navegador amb Selenium té un WindowHandle (o ANEU) únic, el WindowHandle requerit ha de passar-se a el mètode switchTo().window() per a canviar entre les diferents finestres.
Obertura de múltiples finestres noves:
Obertura de diverses pestanyes noves:
Localitzadors a Selenium:
Selenium webdriver utilitza 8 localitzadors per a trobar els elements a la pàgina web. La següent és la llista d’identificadors o localitzadors d’objectes admesos per selenium.
D’acord amb la prioritat, la llista de localitzadors que s’utilitzaran en crear seqüències de comandes.
- id: element seleccionat amb l’atribut @id especificat .
- Nombre: seleccioni el primer element amb el atribut @name especificat.
- Linktext: seleccioni un element d’enllaç (etiqueta d’ancoratge) que contingui text que coincideixi amb el text de l’enllaç especificat.
- Text d’enllaç parcial: seleccioni un element d’enllaç (etiqueta d’ancoratge) que contingui text que coincideixi amb el text de l’enllaç parcial especificat.
- Nom de l’etiqueta: localiza l’element utilitzant un nom d’etiqueta.
- Nom de la classe: localiza l’element utilitzant un nom de classe.
- Css: selecciona l’element usant els selectors css.
- XPath: Localitza un element utilitzant una expressió XPath.
Localizadores relativos:
Els localitzadors relatius, també anomenats localitzadors amigables, ajuden a situar elements web que són a prop, a l’esquerra, a la dreta, damunt i sota un element específic. Els mètodes de localització relativa admeten l’ús amb withTagName (en Selenium 4 Java) o with_tag_name (en Selenium 4 Python). Aquests són els cinc localitzadors relatius que estan disponibles a Selenium 4.
WebElement googleSearchIcon = driver.findElement (By.xpath("//div[1]/div[3]/center/input[1]")); WebElement luckyButton = driver .findElement(RelativeLocator.with(By.tagName("input")) .toRightOf(googleSearchIcon)); luckyButton.click();
Captura de pantalla de TakeElement
A Selenium 3, hi havia una disposició per a capturar una captura de pantalla de tota la pàgina web. Selenium 4 en endavant, hi ha una nova opció per a capturar captures de pantalla d’un WebElement en particular. Per tant, no és necessari utilitzar eines de tercers com en Selenium 3 per a capturar una captura de pantalla de WebElement.
Exemple per a Selenium 3:
File file= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(file,new File("./screenshots/google.png"));
El mètode recentment introduït a Selenium 4 captura la captura de pantalla d’un element per al context de navegació actual.
Exemple per a Selenium 4:
WebElement logo = driver.findElement (By.xpath("//img[@class='lnXdpd']")); File logoFile = logo.getScreenshotAs(OutputType.FILE); File logoDestFile =new File("./screenshots/logo.png"); FileUtils.copyFile(logoFile,logoDestFile);
Noves incorporacions a la classe d’accions
Actions Class a Selenium proporciona diversos mètodes per a realitzar una sola acció o una sèrie d’accions en els WebElements presents en el DG. Les accions del mouse (p. ex., fer clic, fer doble clic, etc.) i les accions del teclat (p. ex., tecla a dalt, tecla a baix, enviar tecles) són les dues àmplies categories d’accions.
Amb Selenium 4, s’agreguen nous mètodes a la classe Actions, que reemplaça les classes del paquet org.openqa.selenium.interactions.
- Fer clic: click(WebElement) és el nou mètode agregat a la classe Actions i serveix com a substitut del mètode moveToElement(onElement).click(). Al igual que el mètode en les versions anteriores a Selenium 4, click(WebElement) es fa servir per fer clic a un element web.
- Fer doble clic: El mètode moveToElement(element).doubleClick() utilitzat per fer doble clic en un WebElement es substitueix con un mètode doubleClick(WebElement) a Selenium 4. Demostrem l’ús del DoubleClick juntament amb el mètode ContextClick .
- ContextClick: El mètode moveToElement(onElement).contextClick() utilitzat per fer doble clic dret a un WebElement ara es substitueix amb el mètode contextClick(WebElement) a Selenium 4.
- Fer clic i mantenir: El mètode moveToElement(Element).clickAndHold() utilitzat per fer clic a un WebElement sense realitzar l’acció Release es substitueix amb clickAndHold(WebElement). Demostrem que l’ús de ClickAndHold junt amb el mètode Release.
- Lliberar: El mètode release(), que es fa servir per deixar anar el botó presionant el mouse, ha sigut part de la classe org.openqa.selenium.interactions.ButtonReleaseAction. A Selenium 4, el mètode és part de la classe Actions.
Conclusió:
Encara que Selenium 4 està dissenyat com un substitut directe de Selenium 3, te alguns trucs que ens fan la vida més fàcil com per exemple els “localitzadors relatius” i un nou suport per interceptar el tràfic de la xarxa, canvis en la forma en què pots crear una nova instància de Selenium, i algunes coses més!
Fonts:
https://blog.testproject.io/2021/06/01/selenium-3-vs-selenium-4/
https://www.softwaretestinghelp.com/
https://www.lambdatest.com/blog/
https://www.quora.com/Cuál-es-la-diferencia-entre-Selenium-3-y-Selenium-4