2012-08-28 21 views
62

Ho una domanda. ho elementi qualcosa di simile:Selettore CSS (id contiene parte del testo)

<a> elemento con id = someGenerated Alcuni: Same: 0: nome

<a> elemento con id = someGenerated Alcuni: Same: 0: cognome

<a> elemento con id = someGenerated Alcuni: Same: 1: nome

<a> elemento con id = someGenerated Alcuni: Same: 1: cognome

Ho bisogno del selettore CSS per ottenere i nomi. Il problema è che non so come ottenerlo. Ho provato a[id*='Some:Same'] - ha restituito tutti gli elementi <a>. Dopo posso ottenere elementi che identificano l'ID con il nome. Ma non mi piace questa idea. Penso che possa essere fatto con qualche altro selettore.

+0

Non riesco ad aggiungere un esempio reale, a causa della politica confidenziale :( – TarasLviv

+0

Ma posso spiegarlo in un altro modo: gli attributi Id contiene successivo: alcuni caratteri generati + alcuni caratteri statici +: elementIndexInTable: + nome colonna nella tabella – TarasLviv

risposta

89

Prova questo:

a[id*='Some:Same'][id$='name'] 

Questo ti porterà tutti a elementi con id contenente

Alcuni: Same

e hanno l'id che termina in

nam e

+0

Beh, id * non ha funzionato per me e ha detto che non può essere valutato su un elemento Web. L'ho usato per trovare iframe che ha id come '' nome. '/ /driver.findElements(By.xpath ("// iframe [contiene (@id *, 'FrameID')]")). size(); 'dove FrameID sta iniziando la parte. Comunque, // // a [contains (@ id, 'Some: Same') e contiene (@ id, 'nome')] 'ha fatto il trucco per me.Quindi +1 al tuo compagno – anujin

+2

Devi rimuovere il selettore XPath da questa risposta, non aggiunge nulla ed è solo infangando le acque – Liam

5

L'unico selettore che vedo è a[id$="name"] (tutti i collegamenti con ID che terminano con "nome") ma non è così restrittivo come dovrebbe.