XPath in Selenium WebDriver Tutorial: come trovare XPath?

Sommario:

Anonim

Nell'automazione Selenium, se gli elementi non vengono trovati dai localizzatori generali come id, classe, nome, ecc., XPath viene utilizzato per trovare un elemento nella pagina web.

In questo tutorial, impareremo a conoscere xpath e le diverse espressioni XPath per trovare gli elementi complessi o dinamici, i cui attributi cambiano dinamicamente all'aggiornamento o a qualsiasi operazione.

In questo tutorial XPath imparerai-

  • Cos'è XPath?
  • Tipi di percorso X.
    • XPath assoluto
    • XPath relativo
  • XPath di base
  • Contiene ()
  • Utilizzando OR & AND
  • Inizia con la funzione
  • Testo()
  • Metodi degli assi XPath
    • A seguire
    • Antenato
    • Bambino
    • Precedente
    • Fratello seguente
    • Genitore
    • Se stesso
    • Discendente

Cos'è XPath nel selenio?

XPath in Selenium è un percorso XML utilizzato per la navigazione attraverso la struttura HTML della pagina. È una sintassi o un linguaggio per trovare qualsiasi elemento in una pagina Web utilizzando l'espressione del percorso XML. XPath può essere utilizzato sia per i documenti HTML che per i documenti XML per trovare la posizione di qualsiasi elemento su una pagina Web utilizzando la struttura HTML DOM.

Il formato di base di XPath in selenio è spiegato di seguito con una schermata.

Formato di base di XPath

Sintassi per XPath selenio:

XPath contiene il percorso dell'elemento situato nella pagina web. La sintassi XPath standard per la creazione di XPath è.

Xpath = // tagname [@ attribute = 'value']
  • //: seleziona il nodo corrente.
  • Tagname: Tagname del nodo particolare.
  • @: Seleziona attributo.
  • Attributo: nome dell'attributo del nodo.
  • Valore: valore dell'attributo.

Per trovare con precisione l'elemento nelle pagine web, esistono diversi tipi di localizzatori:

Localizzatori XPath Trova diversi elementi sulla pagina web
ID Per trovare l'elemento in base all'ID dell'elemento
Nome della classe Per trovare l'elemento in base al nome classe dell'elemento
Nome Per trovare l'elemento in base al nome dell'elemento
Testo del collegamento Per trovare l'elemento in base al testo del collegamento
XPath XPath richiesto per trovare l'elemento dinamico e attraversare i vari elementi della pagina web
Percorso CSS Il percorso CSS individua anche gli elementi che non hanno nome, classe o ID.

Tipi di percorso X.

Esistono due tipi di XPath:

1) XPath assoluto

2) XPath relativo

XPath assoluto:

È il modo diretto per trovare l'elemento, ma lo svantaggio dell'XPath assoluto è che se vengono apportate modifiche al percorso dell'elemento, l'XPath viene fallito.

La caratteristica chiave di XPath è che inizia con la singola barra (/), il che significa che puoi selezionare l'elemento dal nodo radice.

Di seguito è riportato l'esempio di un'espressione xpath assoluta dell'elemento mostrato nella schermata seguente.

NOTA: puoi esercitarti nel seguente esercizio XPath su questo http://demo.guru99.com/test/selenium-xpath.html

Fare clic qui se il video non è accessibile

XPath assoluto:

/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / b [1]

XPath assoluto

Xpath relativo:

Xpath relativo inizia dal centro della struttura HTML DOM. Inizia con una doppia barra (//). Può cercare elementi ovunque sulla pagina web, significa che non c'è bisogno di scrivere un lungo xpath e puoi iniziare dal centro della struttura HTML DOM. Xpath relativo è sempre preferito in quanto non è un percorso completo dall'elemento radice.

Di seguito è riportato l'esempio di un'espressione XPath relativa dello stesso elemento mostrato nella schermata seguente. Questo è il formato comune utilizzato per trovare l'elemento da XPath.

Fare clic qui se il video non è accessibile

XPath relativo: // div [@ class = 'Featured-box cloumnsize1'] // h4 [1] // b [1]

XPath relativo

Cosa sono gli assi XPath.

Gli assi XPath cercano diversi nodi nel documento XML dal nodo del contesto corrente. Gli assi XPath sono i metodi utilizzati per trovare elementi dinamici, che altrimenti non sarebbe possibile con il normale metodo XPath senza ID, nome classe, nome, ecc.

I metodi degli assi vengono utilizzati per trovare quegli elementi, che cambiano dinamicamente durante l'aggiornamento o qualsiasi altra operazione. Ci sono pochi metodi degli assi comunemente usati in Selenium Webdriver come figlio, genitore, antenato, fratello, precedente, sé, ecc.

Utilizzo di XPath Gestione di elementi complessi e dinamici in selenio

1) XPath di base:

L'espressione XPath seleziona i nodi o l'elenco di nodi sulla base di attributi come ID, Nome, Nome classe , ecc. Dal documento XML come illustrato di seguito.

Xpath = // input [@ name = 'uid']

Ecco un collegamento per accedere alla pagina http://demo.guru99.com/test/selenium-xpath.html

XPath di base

Alcune espressioni xpath più basilari:

Xpath = // input [@ type = 'text']Xpath = // label [@ id = "message23"]Xpath = // input [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) Contiene ():

Contains () è un metodo utilizzato nell'espressione XPath. Viene utilizzato quando il valore di un attributo cambia dinamicamente, ad esempio, le informazioni di accesso.

La funzione di contenimento ha la capacità di trovare l'elemento con testo parziale come mostrato nell'esempio XPath di seguito.

In questo esempio, abbiamo cercato di identificare l'elemento utilizzando semplicemente il valore di testo parziale dell'attributo. Nell'espressione XPath sottostante viene utilizzato il valore parziale "sub" al posto del pulsante di invio. Si può osservare che l'elemento è stato trovato con successo.

Il valore completo di "Tipo" è "invia" ma utilizza solo il valore parziale "sub".

Xpath = // * [contiene (@ type, 'sub')] 

Il valore completo di "nome" è "btnLogin" ma utilizza solo il valore parziale "btn".

Xpath = // * [contiene (@ name, 'btn')]

Nell'espressione sopra, abbiamo preso "nome" come attributo e "btn" come valore parziale, come mostrato nello screenshot qui sotto. Questo troverà 2 elementi (LOGIN & RESET) poiché il loro attributo "nome" inizia con "btn".

Allo stesso modo, nell'espressione seguente, abbiamo preso "id" come attributo e "messaggio" come valore parziale. Verranno trovati 2 elementi ("L'ID utente non deve essere vuoto" e "La password non deve essere vuota") poiché l'attributo "nome" inizia con "messaggio".

Xpath = // * [contiene (@ id, 'messaggio')] 

Nell'espressione sottostante, abbiamo preso il "testo" del collegamento come attributo e "qui" come valore parziale, come mostrato nello screenshot sottostante. Questo troverà il collegamento ("qui") poiché mostra il testo "qui".

Xpath = // * [contiene (text (), 'qui')]Xpath = // * [contiene (@ href, 'guru99.com')] 

3) Utilizzando OR & AND:

Nell'espressione OR, vengono utilizzate due condizioni, se la prima condizione O la seconda condizione deve essere vera. È anche applicabile se una qualsiasi condizione è vera o forse entrambe. Significa che una qualsiasi condizione dovrebbe essere vera per trovare l'elemento.

Nell'espressione XPath sottostante, identifica gli elementi le cui condizioni singole o entrambe sono vere.

Xpath = // * [@ type = 'submit' o @ name = 'btnReset']

Evidenziando entrambi gli elementi come elemento "LOGIN" con attributo "tipo" e elemento "RESET" con attributo "nome".

Nell'espressione AND, vengono utilizzate due condizioni, entrambe devono essere vere per trovare l'elemento. Non riesce a trovare l'elemento se una qualsiasi condizione è falsa.

Xpath = // input [@ type = 'submit' and @ name = 'btnLogin']

Nell'espressione sottostante, evidenziando l'elemento "LOGIN" poiché ha sia l'attributo "tipo" che "nome".

4) Xpath inizia con

XPath starts-with () è una funzione utilizzata per trovare l'elemento web il cui valore dell'attributo viene modificato all'aggiornamento o da altre operazioni dinamiche sulla pagina web. In questo metodo, il testo iniziale dell'attributo viene confrontato per trovare l'elemento il cui valore dell'attributo cambia dinamicamente. Puoi anche trovare elementi il ​​cui valore dell'attributo è statico (non cambia).

Ad esempio -: Supponiamo che l'ID di un particolare elemento cambi dinamicamente come:

Id = "message12"

Id = "message345"

Id = "message8769"

e così via ... ma il testo iniziale è lo stesso. In questo caso, usiamo l'espressione Inizia con.

Nell'espressione sottostante, ci sono due elementi con un id che inizia con "messaggio" (ad esempio, "ID utente non deve essere vuoto" e "Password non deve essere vuoto"). Nell'esempio seguente, XPath trova gli elementi il ​​cui "ID" inizia con "messaggio".

Xpath = // label [inizia con (@ id, "messaggio")]

5) Funzione XPath Text ()

La funzione XPath text () è una funzione incorporata di selenium webdriver che viene utilizzata per individuare gli elementi in base al testo di un elemento web. Aiuta a trovare gli elementi di testo esatti e individua gli elementi all'interno dell'insieme di nodi di testo. Gli elementi da individuare dovrebbero essere in formato stringa.

In questa espressione, con la funzione testo, troviamo l'elemento con la corrispondenza esatta del testo come mostrato di seguito. Nel nostro caso troviamo l'elemento con il testo "UserID".

Xpath = // td [text () = 'UserID'] 

6) Metodi degli assi XPath:

Questi metodi degli assi XPath vengono utilizzati per trovare gli elementi complessi o dinamici. Di seguito vedremo alcuni di questi metodi.

Per illustrare il metodo degli assi XPath, utilizzeremo il sito demo della banca Guru99.

a) Seguente:

Seleziona tutti gli elementi nel documento del nodo corrente () [La casella di immissione dell'ID utente è il nodo corrente] come mostrato nella schermata di seguito.

Xpath = // * [@ type = 'text'] // following :: input

Sono presenti 3 nodi di "input" corrispondenti utilizzando la password dell'asse "seguente", il login e il pulsante di ripristino. Se vuoi concentrarti su un elemento particolare, puoi utilizzare il seguente metodo XPath:

Xpath = // * [@ type = 'text'] // following :: input [1]

Puoi modificare l'XPath in base ai requisiti inserendo [1], [2]

… e così via.

Con l'input come "1", la schermata seguente trova il nodo particolare che è l'elemento della casella di input "Password".

b) Antenato:

L'asse degli antenati seleziona tutti gli elementi degli antenati (nonno, genitore, ecc.) Del nodo corrente come mostrato nella schermata seguente.

Nell'espressione sottostante, troviamo l'elemento antenato del nodo corrente (nodo "TEST D'IMPRESA").

Xpath = // * [text () = 'Enterprise Testing'] // ancestor :: div

Ci sono 13 nodi "div" che corrispondono utilizzando l'asse "antenato". Se vuoi concentrarti su un elemento particolare, puoi utilizzare XPath di seguito, dove cambi il numero 1, 2 secondo le tue esigenze:

Xpath = // * [text () = 'Enterprise Testing'] // ancestor :: div [1]

Puoi modificare l'XPath in base ai requisiti inserendo [1], [2]

… e così via.

c) Bambino:

Seleziona tutti gli elementi figli del nodo corrente (Java) come mostrato nella schermata seguente.

Xpath = // * [@ id = 'java_technologies'] // child :: li

Ci sono 71 nodi "li" che corrispondono utilizzando l'asse "figlio". Se vuoi concentrarti su un particolare elemento, puoi usare il seguente xpath:

Xpath = // * [@ id = 'java_technologies'] // child :: li [1]

È possibile modificare xpath in base al requisito inserendo [1], [2]

… e così via.

d) Precedente:

Seleziona tutti i nodi che vengono prima del nodo corrente come mostrato nella schermata seguente.

Nell'espressione seguente, identifica tutti gli elementi di input prima del pulsante "LOGIN" che è l'elemento di input dell'ID utente e della password .

Xpath = // * [@ type = 'submit'] // preceding :: input

Sono presenti 2 nodi di "input" che corrispondono utilizzando l'asse "precedente". Se vuoi concentrarti su un elemento particolare, puoi utilizzare il seguente XPath:

Xpath = // * [@ type = 'submit'] // preceding :: input [1]

È possibile modificare xpath in base al requisito inserendo [1], [2]

… e così via.

e) Fratello seguente:

Seleziona i seguenti fratelli del nodo di contesto. I fratelli si trovano allo stesso livello del nodo corrente come mostrato nella schermata seguente. Troverà l'elemento dopo il nodo corrente.

 xpath = // * [@ type = 'submit'] // following-sibling :: input

Un nodo di input che corrisponde utilizzando l'asse "successivo-fratello".

f) Genitore:

Seleziona il genitore del nodo corrente come mostrato nella schermata seguente.

Xpath = // * [@ id = 'rt-feature'] // parent :: div

Ci sono 65 nodi "div" che corrispondono utilizzando l'asse "genitore". Se vuoi concentrarti su un elemento particolare, puoi utilizzare il seguente XPath:

Xpath = // * [@ id = 'rt-feature'] // parent :: div [1]

Puoi modificare l'XPath in base ai requisiti inserendo [1], [2]

… e così via.

g) Sé:

Seleziona il nodo corrente o "self" significa che indica il nodo stesso come mostrato nella schermata seguente.

Un nodo corrispondente utilizzando l'asse "self". Trova sempre un solo nodo poiché rappresenta l'elemento del sé.

Xpath = // * [@ type = 'password'] // self :: input

h) Discendente:

Seleziona i discendenti del nodo corrente come mostrato nella schermata seguente.

Nell'espressione sottostante, identifica tutti gli elementi discendenti dell'elemento corrente (elemento del frame 'Main body surround') che significa sotto il nodo (nodo figlio, nodo nipote, ecc.).

Xpath = // * [@ id = 'rt-feature'] // discendente :: a

Ci sono 12 nodi di "collegamento" che corrispondono utilizzando l'asse "discendente". Se vuoi concentrarti su un elemento particolare, puoi utilizzare il seguente XPath:

Xpath = // * [@ id = 'rt-feature'] // discendente :: a [1]

Puoi modificare l'XPath in base ai requisiti inserendo [1], [2]

… e così via.

Sommario:

XPath è necessario per trovare un elemento nella pagina web per eseguire un'operazione su quel particolare elemento.

  • Esistono due tipi di selenio XPath:
    • XPath assoluto
    • XPath relativo
  • Gli assi XPath sono i metodi utilizzati per trovare elementi dinamici, che altrimenti non è possibile trovare con il normale metodo XPath
  • L'espressione XPath seleziona i nodi o l'elenco di nodi sulla base di attributi come ID, Nome, Nome classe, ecc. Dal documento XML.