2012-07-30 5 views
16

Come posso trovare l'elemento in DOM basato su un attributo personalizzato?Web driver selenio: come trovare l'elemento in DOM in base all'attributo personalizzato

Ad esempio:

attributi DOM non sono presenti nella visualizzazione HTML. Usando l'ispettore DOM posso identificare che l'attributo personalizzato è unico.

driver.findElement(By.id("SimpleSearch:dIndicesGrid:1:Value")).getAttribute("_celltype"); 

Qui _celltype è un attributo personalizzato. Questo attributo non è visibile nella visualizzazione HTML.

risposta

18

Si dovrebbe individuare l'elemento con xpath.

Il seguente avrebbe trovato ogni elemento che possiede l'attributo _celltype con valore 'tipo di cellule':

driver.findElement(By.xpath("//*[@_celltype='celltype']")) 

Se si conosce il tipo di elemento è possibile renderla più specifica. Ad esempio, se si sa che sono i tag div, fanno:

driver.findElement(By.xpath("//div[@_celltype='celltype']")) 
+1

ma ho bisogno di ottenere il valore da _celltype. – user1563042

+0

Siamo spiacenti, non sono sicuro di aver capito il tuo obiettivo. Stai cercando di trovare un elemento basato sul suo attributo _celltype o stai cercando di trovare il valore dell'attributo _celltype di un elemento? Per me sembra che il primo sia coperto da questa risposta e il secondo dal codice nella tua domanda. Potresti chiarire cosa stai cercando, magari dare un esempio di HTML e quale valore/elemento stai cercando di ottenere da esso? –

+0

mi spiace di provare a chiedere come leggere l'attributo DOM personalizzato (_celltype) dell'elemento web. – user1563042

2

Trova l'elemento da XPath:

WebElement element = driver.findElement(By.xpath("xpath_link")); 

xpath_link = //*[@_celltype='celltype']; // This is sample xpath; 

System.out.println(element.getText()); 

In questo modo ottenere il testo del campo 'tipo di cellule' e visualizza il valore di esso.

14

XPath è il male, si potrebbe usare questo invece

By.CssSelector("[_celltype='celltype']"); 
+1

È preferibile CssSelector. Leggi anche più facile. –

+1

È anche più veloce. Sto facendo funzionare un'applicazione in cui XPath è fondamentalmente 6 volte più lento di qualsiasi altro selettore. Poiché devo eseguire questa operazione più volte, fa un'enorme differenza nel tempo di esecuzione totale della mia app. –

Problemi correlati