2013-03-03 13 views
5

Sto provando a navigare attraverso una pagina Web con xpath e sto ottenendo risultati misti. Questo è quello che sto usando:Selenium WebElement xpath Java

driver.findElement(By.xpath("//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')]")); 

Che in realtà funziona alla grande, ma il problema che sto funzionando in questo questo:

<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92300</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92475</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92476</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92301</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92474</div> 

Quando eseguo che XPath nel mio test Selenium Ho sempre trovato la prima div . Come posso modificare il mio xpath per recuperare il 4 ° div (92301) o qualche altro div che non è il primo della lista?

risposta

8

Utilizzare questo XPath (//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4] per ottenere 4 thdiv.

Per trovare div che contiene 92301 di testo, utilizzare questo XPath:

//div[contains(text(), '92301')] 
+0

Grazie, Kirill! Funziona bene ma a volte l'utente inserisce i dati prima o dopo quello che sto cercando, che potrebbe cambiare la posizione. C'è un modo diverso per trovare il div con 92301 se sono stati scritti diversi nuovi div in primo piano? – cbohannon

+0

@ user2055841, ho aggiornato la mia risposta. –

3

è possibile utilizzare WebElement.findElements():

driver.findElements(By.xpath(...)).get(3) 

o modificare XPath per:

driver.findElement(By.xpath("(//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4]")); 
+0

Grazie, mantrid. Questo è super utile. Mi prende quello che sto cercando. Continuerò anche a cercare un modo più dinamico di fare ciò, poiché ciò che sono dopo potrebbe non essere sempre nella posizione 4. – cbohannon

Problemi correlati