Comprendere i selettori di Playwright Una guida

Guida ai selettori di Playwright

Immagine di 200 Degrees da Pixabay

Playwright è una potente e versatile libreria di automazione per il testing web, che consente agli sviluppatori di controllare i browser web in modo programmato e di condurre test end-to-end affidabili. Al centro della funzionalità di Playwright si trova un componente cruciale: i selettori. I selettori sono il ponte tra i tuoi test e la tua pagina web. Ti consentono di trovare e interagire con gli elementi sulla pagina web.

Questa guida approfondisce i selettori in Playwright, mostrando la loro importanza, i tipi e le migliori pratiche.

Cosa Sono I Selettori In Playwright?

I selettori in Playwright sono stringhe che identificano elementi specifici su una pagina web. Vengono utilizzati per indirizzare questi elementi per interazioni come cliccare, digitare o leggere il testo. I selettori rendono i tuoi test più leggibili e resistenti ai cambiamenti e aiutano a mantenere la focalizzazione sul comportamento che stai cercando di testare.

Tipi Di Selettori In Playwright

In Playwright sono disponibili diversi tipi di selettori. Questi includono selettori CSS, selettori XPath, selettori di testo e selettori di attributi. Approfondiamo ognuno di essi.

Selettori CSS

I selettori CSS si basano sul linguaggio CSS utilizzato per la progettazione di pagine web. Ci consentono di identificare elementi su una pagina web utilizzando proprietà CSS. I selettori CSS possono indirizzare elementi per tipo (come div, button, a), classe (.nomedellaclasse), ID (#nomedellaid), attributo ([attributo=valore]) o una combinazione di questi.

Ad esempio, in Playwright, potresti indirizzare un pulsante con l’ID submit utilizzando page.click(‘#submit’). Se hai una classe o un attributo univoco, puoi selezionarli in modo simile. I selettori CSS consentono anche query più complesse come la selezione del primo figlio di un nodo (:first-child), la selezione di elementi con relazioni fratello specifiche (+, ~) o la selezione di elementi che si trovano in uno stato specifico (:hover, :focus).

Selettori XPath

I selettori XPath offrono un modo diverso per navigare tra elementi e attributi in un documento HTML. Sono particolarmente potenti quando è necessario indirizzare elementi in base alla loro posizione gerarchica nel documento HTML o in base al testo specifico che contengono.

Ad esempio, page.click(‘//button[normalize-space(.)=”Sign Up”]’) indirizza un pulsante con il testo esatto “Sign Up”. L’espressione / / indica a XPath di cercare in tutto il documento HTML. Il button indica a XPath di cercare solo gli elementi button. La parte normalize-space(.)=”Sign Up” è una funzione che rimuove gli spazi vuoti all’inizio e alla fine della stringa e sostituisce le sequenze di spazi vuoti con un singolo spazio. Questo può essere molto utile quando si tratta di formattazione imprevedibile.

Selettori di Testo

I selettori di testo ti consentono di indirizzare elementi in base al testo visualizzato. Questo può essere estremamente utile per il test da prospettiva dell’utente, poiché gli utenti interagiscono spesso con le pagine web in base al testo che vedono.

Ad esempio, con il comando page.click(‘text=”Sign Up”’), Playwright cercherebbe un elemento che visualizza il testo “Sign Up” e farebbe clic su di esso. Questo funziona per pulsanti, link, div, span e altri elementi che potrebbero contenere testo visibile.

Selettori di Attributi

I selettori di attributi indirizzano elementi in base ai loro attributi HTML. Questo può essere utile quando un elemento non ha una classe o un ID univoci o quando la sua posizione nel documento HTML non è fissa.

Ad esempio, il comando page.click(‘[disabled]’) indirizza un elemento con l’attributo disabled, indipendentemente dal suo tipo, classe o ID. Puoi anche indirizzare valori specifici degli attributi, ad esempio, page.click(‘[value=”Submit”]’) farebbe clic su un elemento con un attributo value di Submit.

Lavorare con i selettori compositi

Quando si lavora con pagine web complesse, gli sviluppatori spesso si trovano di fronte a situazioni in cui gli elementi non possono essere mirati in modo affidabile da un singolo tipo di selettore. È qui che entrano in gioco i selettori compositi. Consentono di concatenare diversi tipi di selettori, creando così un processo di selezione degli elementi più preciso e robusto.

I selettori compositi in Playwright sono una combinazione di diversi tipi di selettori uniti utilizzando l’operatore >>. Questo operatore indica che l’elemento mirato deve corrispondere a tutti i selettori combinati nella sequenza.

Analizziamo questo esempio: page.click('css=.container >> text=Submit'). In questo comando:

  • css=.container utilizza un selettore CSS per mirare a un elemento con la classe container. I selettori CSS vengono spesso utilizzati per la loro presenza ubiqua nello sviluppo web, la loro precisione e la loro leggibilità.
  • >> è l’operatore che combina i selettori. Crea una relazione tra i selettori, indicando che l’elemento text=Submit deve essere un figlio (diretto o indiretto) dell’elemento .container.
  • text=Submit utilizza un selettore di testo per mirare a un elemento che visualizza il testo visibile “Submit”. Questo è un esempio di mirare a elementi dal punto di vista degli utenti, poiché gli utenti spesso interagiscono con elementi in base al testo visibile.

In uno scenario pratico, supponiamo di avere più pulsanti “Submit” in una pagina web, ognuno all’interno di un diverso .container. Il selettore composito fornisce un modo per interagire con il pulsante “Submit” specifico all’interno del .container desiderato.

Anche se potenti, i selettori compositi richiedono una considerazione attenta. La loro precisione dipende dalla struttura della pagina web; eventuali modifiche alla struttura potrebbero richiedere aggiornamenti ai selettori compositi. Pertanto, sebbene offrano un miraggio più accurato degli elementi, possono aumentare potenzialmente la manutenzione se la struttura della pagina web è soggetta a frequenti modifiche.

Selettori personalizzati in Playwright

Playwright è estremamente flessibile, fornendo vari selettori incorporati per adattarsi ai casi d’uso più comuni. Tuttavia, ci saranno sempre scenari unici o complessi che richiedono un approccio più personalizzato. Per tali casi, Playwright offre la possibilità di progettare selettori personalizzati, dando agli sviluppatori la libertà di adattare le strategie di miraggio degli elementi alle loro esigenze specifiche.

I selettori personalizzati possono essere particolarmente utili quando si lavora con componenti web personalizzati o strutture del DOM non convenzionali. Ad esempio, supponiamo di interagire con una pagina web che utilizza un componente web personalizzato che presenta proprietà uniche per il componente. È possibile creare un selettore personalizzato che mira specificamente agli elementi in base a queste proprietà specifiche del componente.

Ecco un esempio concettuale per illustrare questo concetto.

Supponiamo di avere un componente web personalizzato <my-component> con una proprietà unica data-state:

<my-component data-state="active">...</my-component>

Per mirare a questo stato attivo, è possibile creare un selettore personalizzato in Playwright che comprenda questo attributo data-state:

<span class="pre--content">playwright.<span class="hljs-property">selectors</span>.<span class="hljs-title function_">register</span>(<span class="hljs-string">'mySelector'</span>, {  <span class="hljs-comment">// Il metodo create viene utilizzato per creare il selettore personalizzato.</span>  <span class="hljs-title function_">create</span>(<span class="hljs-params">root, target</span>) {    <span class="hljs-keyword">return</span> root.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">`[data-state=<span class="hljs-subst">${target}</span>]`</span>);  },});</span>

Poi è possibile utilizzare questo selettore personalizzato nei comandi Playwright:

await page.click('mySelector=active');

Questo comando farebbe clic su <my-component> solo quando data-state è “attivo”.

Questa capacità di creare selettori personalizzati amplifica la versatilità di Playwright, consentendogli di adattarsi a particolari peculiarità dell’applicazione e offrendo agli sviluppatori un controllo preciso su come gli elementi vengono selezionati e interagiti nei loro test.

Linee guida per l’uso dei selettori in Playwright

La selezione degli elementi giusti è fondamentale per un’automazione di successo in Playwright. Ecco alcune intuizioni distillate dalla mia esperienza:

1. Prediligi la specificità rispetto alla flessibilità: Cerca selettori abbastanza specifici per identificare gli obiettivi ma abbastanza flessibili da tollerare piccoli cambiamenti nella pagina web. I selettori eccessivamente precisi spesso si rompono con piccoli aggiustamenti dell’interfaccia utente.

2. Usa attributi significativi: id, name o data-testid sono tipicamente unici e coerenti – la tua scelta preferita per i selettori. Questo aiuta nella creazione di script di test robusti.

3. Priorità alla leggibilità: Il tuo codice non è solo per te; è per il tuo team e per il futuro te. Mantieni i selettori intuitivi e chiari, integrandoli con commenti quando necessario.

4. Usa saggiamente selettori compositi e personalizzati: Questi sono strumenti potenti per creare selettori precisi e consapevoli del contesto. Tuttavia, usali con giudizio, poiché potrebbero diventare un problema di manutenzione se vengono usati in modo eccessivo o errato.

Conclusioni

Padroneggiare i selettori in Playwright significa comprendere ed equilibrare i loro punti di forza unici. Selettori specifici ma flessibili, attributi significativi, codice leggibile e l’uso saggio di selettori compositi e personalizzati sono fondamentali per un’automazione efficace. Mentre continui il tuo percorso con Playwright, queste linee guida fungono da bussola, aiutandoti a navigare nel complesso panorama dell’automazione web. Ricorda, l’apprendimento costante e l’adattamento sono la chiave per un test web di successo con Playwright.