Selettore CSS inserito Selenium

โšก Riepilogo intelligente

Selettore CSS inserito Selenium รจ una potente strategia di localizzazione che identifica gli elementi utilizzando tag HTML, ID, classi, attributi e modelli di testo interno. Questa risorsa spiega ogni tipo di selettore CSS con esempi passo passo per Selenium SDI.

  • ๐Ÿ†” Etichetta e ID: Combina un tag HTML con il prefisso # per selezionare con precisione gli elementi che possiedono un attributo ID univoco.
  • ๐ŸŽฏ Etichetta e classe: Utilizza la sintassi con il punto (.) per individuare gli elementi che condividono una classe CSS, utile per i componenti dell'interfaccia utente ripetuti.
  • ๐Ÿงฉ Etichetta e attributo: Applica le parentesi quadre [attributo=valore] per identificare gli elementi tramite nome, tipo o qualsiasi coppia di attributi personalizzati.
  • ๐Ÿชœ Etichetta, classe e attributo: Utilizza piรน condizioni concatenate per disambiguare gli elementi che condividono sia i nomi delle classi che i valori degli attributi.
  • ๐Ÿ”ค Corrispondenza del testo interno: Utilizza il pattern :contains(โ€œtextโ€) per individuare etichette ed elementi privi di ID, nomi o classi.
  • โœ… migliori Pratica: Preferisci gli ID stabili ai selettori annidati in profonditร  per mantenere Selenium Script di automazione resistenti alle modifiche dell'interfaccia utente.

Selettore CSS inserito Selenium

Che cos'รจ un selettore CSS in Selenium?

A Selettore CSS inserito Selenium รˆ una stringa che identifica un elemento web tramite una combinazione di tag HTML, ID, classe e attributi. I selettori CSS sono leggermente piรน avanzati rispetto all'individuazione tramite ID o nome, ma rappresentano la strategia piรน diffusa tra gli esperti. Selenium utenti perchรฉ possono raggiungere elementi che non hanno alcun attributo ID o Name.

Selettori CSS in Selenium si presentano in molte forme, ma questa guida si concentra sui cinque modelli piรน comuni utilizzati in Selenium QUI:

  • Etichetta e documento d'identitร 
  • Etichetta e classe
  • Etichetta e attributo
  • Tag, classe e attributo
  • Testo interno

Quando si utilizza questa strategia in Selenium IDE, anteponi sempre il prefisso Target scatola con โ€œcss="come dimostrato in ciascuno degli esempi seguenti.

Perchรฉ utilizzare i selettori CSS in Selenium?

I selettori CSS sono la strategia di localizzazione preferita per molti Selenium Gli ingegneri dell'automazione sono apprezzati perchรฉ sanno bilanciare velocitร , flessibilitร  e leggibilitร . Le moderne applicazioni web spesso utilizzano ID generati dinamicamente o rimuovono completamente gli attributi name, lasciando i selettori CSS come unico modo affidabile per individuare un elemento specifico sulla pagina.

I principali vantaggi dell'utilizzo dei selettori CSS includono:

  • Performance: I selettori CSS vengono elaborati dal motore nativo del browser, quindi vengono eseguiti piรน velocemente rispetto alle equivalenti espressioni XPath, soprattutto nei browser meno recenti come Internet Explorer.
  • Flessibilitร : Combinano logica basata su tag, classi, attributi e corrispondenze parziali, consentendo ai tester di individuare elementi privi di un ID stabile.
  • leggibilitร : La sintassi rispecchia il modo in cui gli sviluppatori scrivono giร  le regole CSS, il che riduce i tempi di apprendimento sia per i tecnici del controllo qualitร  che per i team di front-end.
  • Stabilitร  tra browser diversi: I selettori CSS si comportano in modo coerente su Chrome, Firefox, Edge e Safari, riducendo i fallimenti dei test instabili.

Tag e ID โ€“ Selettore CSS

Questo esempio utilizza la casella di testo Email nella pagina di accesso di Facebook. L'elemento ha un ID di "email", ed era giร  stato consultato nella sezione "Individuazione tramite ID". Ora lo stesso elemento viene preso di mira utilizzando un Selenium Selettore CSS con l'attributo ID.

Sintassi

css=tag#id

  • tag = il tag HTML dell'elemento a cui si accede
  • # = il simbolo di cancelletto, che deve essere sempre presente quando si utilizza un Selenium Selettore CSS con ID
  • id = l'ID dell'elemento a cui si accede

Tieni presente che l'ID รจ sempre preceduto da un cancelletto (#).

Passo 1) Accedere a www.facebook.comUtilizzando gli strumenti per sviluppatori del browser (o uno strumento meno recente come Firebug), esamina la casella di testo "Email o telefono".

Nota che il tag HTML รจ โ€œingresso" e il suo ID รจ "emailโ€œ. Il selettore CSS completo diventa quindi โ€œcss=input#email".

Tag e ID - Selettore CSS in Selenium

Passo 2) Accedere "css=input#email" nel Target scatola di Selenium IDE e fare clic sul pulsante Trova. Selenium L'IDE evidenzia l'elemento corrispondente sulla pagina.

Selenium IDE che evidenzia il campo Email tramite Tag e ID

Tag e classe โ€“ Selettore CSS

Un selettore CSS in Selenium che utilizza un tag HTML e un nome di classe segue la stessa idea di tag e ID, ma un punto (.) sostituisce il segno di cancelletto.

Sintassi

css=tag.class

  • tag = il tag HTML dell'elemento a cui si accede
  • . = il punto, che deve essere sempre presente quando si utilizza un selettore CSS con classe
  • class = la classe dell'elemento a cui si accede

Passo 1) Apri la pagina demo https://demo.guru99.com/test/facebook.html e ispeziona la casella di testo โ€œEmail o telefonoโ€. Nota che il tag HTML รจ โ€œingresso" e la sua classe รจ "testo di input".

Tag e classe - Selettore CSS in Selenium

Passo 2) In Selenium IDE, inserisci โ€œcss=input.testoinput"Nel Target casella e fare clic su Trova. Selenium L'IDE riconosce la casella di testo Email o Telefono.

Selenium Individuazione degli elementi IDE tramite tag e classe

Tieni presente che quando piรน elementi condividono lo stesso tag HTML e la stessa classe, viene riconosciuto solo il primo elemento corrispondente nel codice sorgente. Esaminate la casella di testo Password nella stessa pagina e noterete che condivide la stessa classe della casella di testo Email o Telefono.

Piรน elementi condividono lo stesso tag e la stessa classe

Nell'illustrazione precedente รจ stata evidenziata solo la casella di testo Email o Telefono perchรฉ compare per prima nel codice sorgente della pagina.

Determinazione dell'ordine sorgente della pagina Selenium stile

Tag e attributi โ€“ Selettore CSS

Questa strategia combina un tag HTML con uno specifico attributo appartenente all'elemento a cui si desidera accedere.

Sintassi

css=tag[attribute=value]

  • tag = il tag HTML dell'elemento a cui si accede
  • [ e ] = parentesi quadre che racchiudono l'attributo e il suo valore corrispondente
  • attributo = l'attributo da utilizzare. Scegline uno univoco per l'elemento, come nome o ID.
  • valore = il valore corrispondente dell'attributo scelto.

Passo 1) Passare alla Mercury Pagina di registrazione per i tour https://demo.guru99.com/test/newtours/register.php Esaminate la casella di testo โ€œCognomeโ€. Notate il tag HTML (โ€œinputโ€) e lโ€™attributo name (โ€œlastNameโ€).

Tag e attributo - Selettore CSS in Selenium

Passo 2) In Selenium IDE, inserisci โ€œcss=input[nome=cognome]"Nel Target casella e fare clic su Trova. Selenium L'IDE individua correttamente il campo Cognome.

Selenium IDE per individuare il cognome tramite attributo

Quando piรน elementi condividono lo stesso tag HTML e lo stesso attributo, viene riconosciuto solo il primo. Il comportamento รจ identico a quello dell'individuazione di elementi con lo stesso tag e la stessa classe.

Tag, classe e attributo โ€“ Selettore CSS

Sintassi

css=tag.class[attribute=value]

  • tag = il tag HTML dell'elemento a cui si accede
  • . = il punto, che deve essere sempre presente quando si utilizza un selettore CSS con classe
  • class = la classe dell'elemento a cui si accede
  • [ e ] = parentesi quadre che racchiudono un attributo specifico e il suo valore corrispondente
  • attributo = l'attributo da utilizzare. Scegline uno univoco per l'elemento, come nome o ID.
  • valore = il valore corrispondente dell'attributo scelto.

Passo 1) Apri la pagina demo https://demo.guru99.com/test/facebook.html e ispeziona le caselle di input โ€œEmail o telefonoโ€ e โ€œPasswordโ€. Prendi nota del loro tag HTML, della classe e degli attributi. Questo esempio utilizza il โ€œtabindexโ€ attributo.

Tag, classe e attributo: selettore CSS

Passo 2) Accedere prima alla casella di testo โ€œEmail o telefonoโ€ utilizzando un valore tabindex di 1. Inserire โ€œcss=input.inputtext[tabindex=1]"In Selenium IDE Target Seleziona la casella e fai clic su Trova. Il campo Email o Telefono verrร  evidenziato.

Selenium IDE per individuare le email tramite tag, classe e attributo

Passo 3) Per selezionare la casella di input della password, รจ sufficiente sostituire il valore tabindex. Inserire โ€œcss=input.inputtext[tabindex=2]"Nel Target casella e fare clic su Trova. Selenium L'IDE individua correttamente la casella di testo della password.

Selenium IDE per individuare la password tramite tag, classe e attributo

Testo interno โ€“ Selettore CSS

Alle etichette HTML raramente vengono assegnati attributi id, name o class. Quindi come si accede a essi in SeleniumLa risposta si trova nel loro testo interno. I testi interni sono le stringhe di testo effettive che l'etichetta HTML visualizza sulla pagina.

Sintassi

css=tag:contains("inner text")

  • tag = il tag HTML dell'elemento a cui si accede
  • testo interno = il contenuto testuale visibile dell'elemento

Passo 1) Passare alla Mercury Home page dei tour https://demo.guru99.com/test/newtours/ Esaminate l'etichetta "Password". Notate il suo tag HTML ("font" in questo caso) e osservate che l'elemento non ha attributi class, id o name.

Testo interno - Ispezione del selettore CSS

Passo 2) Tipo css=font:contains(โ€œPassword:โ€) ai miglioramenti Selenium IDE Target casella e fare clic su Trova. Selenium L'IDE individua l'etichetta Password come mostrato di seguito.

Selenium IDE che individua l'etichetta della password tramite il testo interno

Passo 3) Questa volta, sostituisci il testo interno con โ€œBostonโ€ in modo che Target diventa โ€œcss=font:contains(โ€œBostonโ€)โ€œ. Fai clic su Trova. L'etichetta โ€œDa Boston a San Franciscoโ€ รจ evidenziata, a dimostrazione che Selenium IDE รจ in grado di individuare un'etichetta lunga anche quando viene fornita solo la prima parola del suo testo interno.

Selenium IDE corrispondenza parziale del testo interno

Selettore CSS vs XPath in Selenium

Sia i selettori CSS che XPath vengono utilizzati per identificare gli elementi web in SeleniumTuttavia, presentano punti di forza diversi. La tabella seguente confronta le due strategie di localizzazione in base a dimensioni chiave:

Criteri Selettore CSS XPath
Velocitร  Piรน veloce, funziona sul motore nativo del browser. Piรน lento, soprattutto nei browser meno recenti.
Tipo di viaggio Solo inoltro (da genitore a figlio) Avanti e indietro (dal figlio al genitore)
Sintassi Piรน brevi e simili alle regole CSS Espressioni di percorso piรน lunghe e gerarchiche
Corrispondenza del testo Limitato alla pseudo-classe :contains() Funzioni testo forte() e contiene()
migliori per Layout statici e applicazioni web moderne Attraversamento complesso del DOM e localizzatori basati su testo

migliori pratiche per la scrittura di selettori CSS in Selenium

Scrivere selettori CSS affidabili va oltre la conoscenza della sintassi. Le seguenti pratiche aiutano i tester a creare selettori CSS stabili e manutenibili. Selenium script che resistono alle modifiche dell'interfaccia utente:

  1. Preferisci attributi unici: Scegli sempre gli attributi id, data-test-id o name aggiunti esplicitamente per l'automazione. Questi rimangono stabili anche quando il layout visivo cambia.
  2. Evitate selettori eccessivamente annidati: Catene lunghe come div > div > ul > li > a Si rompono facilmente quando gli sviluppatori effettuano il refactoring del markup. Mantieni i selettori il piรน brevi possibile.
  3. Utilizzate con criterio le corrispondenze parziali: Modelli come [class*="btn-primary"] tollerano piccole modifiche al nome della classe, ma potrebbero anche corrispondere a elementi non intenzionali.
  4. Evitate i localizzatori basati su indice: Selettori come nth-child(3) sono fragili perchรฉ l'aggiunta di un elemento fratello sposta ogni posizione.
  5. Convalida i selettori in DevTools: Prima di eseguire a Selenium script, incolla il selettore nella console degli strumenti per sviluppatori di Chrome usando document.querySelector() per confermare che restituisce esattamente un elemento.
  6. Combina gli attributi per creare unicitร : Quando una classe รจ condivisa da molti elementi, aggiungi un filtro di attributi come input.form-control[name="email"] per disambiguare l'obiettivo.
  7. Documentare e riutilizzare: Centralizzare i selettori all'interno di una classe Page Object in modo che un singolo aggiornamento risolva tutti i test che fanno riferimento allo stesso elemento.

Seguire queste linee guida riduce l'instabilitร , migliora la velocitร  di esecuzione dei test e rende Selenium suite piรน facili da mantenere nel tempo.

Riepilogo: Guida rapida alla sintassi dei selettori CSS

La tabella seguente consolida ogni Selenium Pattern di selezione CSS trattati in questa guida:

Metodo Target Sintassi Esempio
Etichetta e documento d'identitร  css=tag#id css=input#email
Etichetta e classe css=tag.class css=input.testoinput
Etichetta e attributo css=tag[attributo=valore] css=input[nome=cognome]
Tag, classe e attributo css=tag.class[attributo=valore] css=input.inputtext[tabindex=1]
Testo interno css=tag:contains(โ€œtextโ€) css=font:contains(โ€œPassword:โ€)

DOMANDE FREQUENTI

Sรฌ. I selettori CSS generalmente vengono eseguiti piรน velocemente di XPath perchรฉ i browser elaborano le regole CSS in modo nativo. La differenza รจ piรน evidente nelle versioni precedenti di Internet Explorer, mentre i browser moderni come Chrome e Firefox ridurre il divario.

Sรฌ. Selettori CSS scritti per Selenium IDE funziona direttamente in Selenium WebDriver tramite By.cssSelector()L'unica differenza รจ che WebDriver non richiede il prefisso "css=", poichรฉ il tipo di localizzatore รจ specificato dal metodo stesso.

No. Firebug รจ stato interrotto nel 2017 dopo essere stato fuso in Firefox Strumenti per sviluppatori. Oggi i tester utilizzano gli strumenti per sviluppatori integrati in Chrome, Firefox, o Edge per ispezionare gli elementi e convalidare i selettori CSS prima di aggiungerli a Selenium script.

Sรฌ. Strumenti basati sull'intelligenza artificiale come TestimMabl e ChatGPT possono suggerire selettori CSS analizzando il DOM. Riducono il lavoro di manutenzione adattando i selettori quando gli sviluppatori rinominano le classi o ristrutturano la pagina.

I motori di autoriparazione basati sull'intelligenza artificiale analizzano il DOM circostante e ripristinano automaticamente i selettori non funzionanti. Quando un selettore CSS non funziona, il motore identifica l'elemento piรน simile utilizzando la similaritร  degli attributi, il contenuto del testo e i modelli storici, ripristinando la stabilitร  del test.

Utilizzare modelli di corrispondenza parziale come [id^="user_"] per i prefissi, [id$="_btn"] per i suffissi, o [id*="cart"] per le sottostringhe. Questi modelli corrispondono a ID generati dinamicamente senza richiedere un valore esatto.

I selettori CSS non possono risalire la gerarchia degli elementi da un elemento figlio al suo genitore e offrono un supporto limitato per la corrispondenza del testo. In questi casi, XPath rimane la scelta migliore. Inoltre, CSS non dispone di funzioni integrate per la logica di fratellanza, a parte i fratelli adiacenti e generici.

Apri gli Strumenti per sviluppatori del browser, passa alla scheda Console ed esegui document.querySelectorAll("your-selector"). La NodeList restituita mostra ogni elemento corrispondente. Un affidabile Selenium Il localizzatore deve restituire esattamente un elemento per il targeting univoco.

Riassumi questo post con: