2013-11-01 10 views
6

Ho bisogno di un piccolo aiuto per quanto riguarda la ricerca di un testo esatto usando xpath in webDriver.Come cercare il nodo per corrispondenza esatta del testo usando Xpath nel webdriver

Supponiamo che io ho il codice HTML come segue ..

<html><body> 
    <table> 
    <tr> 
     <td><button>abcd</button></td> 
     <td><button>abc</button></td> 
    </tr> 
    </table> 
</body></html> 

ora voglio fare clic sul pulsante "abc"

ho usato come XPath //button[contains(text(),'abc')] ma è sempre esibirsi sul pulsante "ABCD", come contiene anche il testo "abc". A questo proposito ho bisogno di un predicato o di qualche altra procedura che possa cercare il testo esatto invece di contenere del testo.

ho anche provato con //button[matches(text(),'abc')], //button[matches($string,'abc')], //button[Text='abc')], //button[.='abc')] e molti altri, ma nessuno di questi ha lavorato per identificare il pulsante "abc".

Non so se c'è qualche problema riguardante la mia versione xpath in quanto non sono a conoscenza della versione. Ma sto usando java 1.6 JDK.

Sebbene il mio scenario esatto non sia l'esempio mostrato, è necessario applicare una logica simile.

Quindi qualsiasi aiuto o suggerimento sarebbe molto apprezzato.

+3

Non capisco ... cosa c'è che non va con una ricerca ** equals **? ... '// pulsante [text() = 'abc']' ....? – Arran

+1

@Arrana sembra sbagliare era // tasto [Testo = 'abc'] 'ma quello giusto è' // pulsante [Testo() = 'abc'] '(come hai scritto) – olyv

+0

Sì, è assolutamente giusto. ... sarebbe qualcosa come una ricerca uguale ... // button [text() = 'abc'] questo xpath funziona correttamente ... grazie mille. – souvik

risposta

0

Provare con ends-with invece di contiene. Se i pulsanti non hanno attributi univoci, è possibile aggiungere anche la gerarchia principale. Mi piace // table/tr/td [1].

+0

grazie per il tuo commento, dimmi una cosa, l'html contiene lo spazio iniziale e finale per il testo. come "abcd" e "abc" .se io uso [contiene (text(), 'abc')] xpath e poi si esibisce sul pulsante "abcd". ma se sto usando [inizia-con (testo(), 'abc') o [finisce-con (testo(), 'abc'), la sua rappresentazione non è in grado di trovare il localizzatore.lo spazio menzionato in xpath che conduce o che segue alla stringa è corretta ?? E in secondo luogo il numero "td" non è fisso nel mio caso. il pulsante può contenere in qualsiasi td nella tabella. infatti in qualche altro tag tr anche se la generazione del pulsante è dinamica. Quindi non posso andare per gerarchia. – souvik

+0

Non posso dire senza accedere all'applicazione, ma puoi fare il giro attorno al modo ottenendo valore di attributo di testo e fare un confronto di stringhe usando le funzioni del linguaggio. – Akbar

+0

Element.getattribute ("testo") – Akbar

19

Vorrei utilizzare il prossimo xpath //button[text()='abc']. Hai menzionato la funzione text() ma non sono sicuro che la sintassi sia corretta. Inoltre hai provato a usare - cerca il testo parziale e WebDriver ottiene il primo elemento trovato. Il tuo caso è il pulsante <button>abcd</button>

+0

Funziona come un incantesimo. Grazie. – MansoorShaikh

+0

@MansoorShaikh grazie, buono a sapersi :) – olyv

Problemi correlati