L’inicialització d’objectes és l’única diferència entre POM i Page Factory a Selenium?


Resposta 1:

La informació següent es pren de la classe JavaDoc de la pàgina PageFactory del mètode initElements ():

estàtic públic T initElements (controlador WebDriver, classe pageClassToProxy) {T pàgina = instantiatePage (controlador, pageClassToProxy); initElements (controlador, pàgina); pàgina de retorn; }
  • Instanteu una instància de la classe donada i configureu un proxy mandós per a cadascun dels llocs web i llista camps declarats, suposant que el nom del camp és també el "id" o "nom" de l'element HTML.

Això significa que per a la classe:

public class Page {private WebElement submit; }

hi haurà un element que es pot localitzar amb l'expressió xpath

// * [@ id = 'enviar'] "o // * [@ nom = 'enviar']
  • De manera predeterminada, es busca l'element o la llista cada vegada que es fa servir un mètode. Per canviar aquest comportament, només cal anotar el camp amb l’anotació de CacheLookup. Per canviar la ubicació de l’element, utilitzeu l’anotació FindBy.

———————————————————————————————

Així, quan utilitzeu PageFactory,

  1. Llista web o llista Les variables es declaren com a privades a la classe d'objectes de pàgina Si la variable WebElement té el mateix nom amb l'ID d'element web o l'atribut de nom, no cal especificar un localitzador per a l'elementOthewise, el localitzador d'elements s'especifica amb un mètode FindBy annotationinitElements (). estableix un proxy mandós per a cada element web de la classe d'objectes de pàgina; aquest proxy associa l'element web amb el seu localitzador; però l’element web no es busca encara quan s’utilitza l’element (anomenant mètodes sobre ell com ara click (), getText (), isEnabled (), etc.), passa el següent: el localitzador associat a l’element web durant la classe de pàgina es recupera la inicialització. Es busca l’element al navegador domif l’element es troba, el codi interactua amb ell si no voleu que es busqui l’element al navegador cada cop que s’utilitza, es pot fer servir l’anotació CacheLookup; en aquest cas, l’element es guarda en memòria cau després de trobar-lo per primera vegada

Aquest és només el relat breu de Page Factory.

És molt beneficiós llegir el codi i intentar entendre el seu funcionament.

Això va fer meravelles per a mi, ja que, per entendre el que fa el codi, vaig haver d’aprendre coses que no sabia bé com ara

  • Classes de proxy d’inicialització de reflexió genèrica

Va trigar un temps a esbrinar-ho, però estic molt contenta de fer-ho.

Bona sort!

Us ha agradat aquest article i voleu llegir més?

Consulteu el meu nou bloc Quora:

Trucs i trucs de seleni


Resposta 2:

A POM (Model d’objectes de pàgina) creeu una nova classe per a cada pàgina / URL nova i hi poseu tots els mètodes d’identificació d’elements.

Page Factory és una anotació dins del seleni que la feu a la classe. Així, quan definiu qualsevol classe com a fàbrica de pàgines, tots els vostres elements dins de la classe es carregaran mentre es truqui qualsevol element de la classe. Th

PS - Page Factory sembla una pràctica molt dolenta si teniu tones d’elements en una classe i en feu servir només un.