Selector de CSS (la identificación contiene parte del texto)

92

Tengo una pregunta. Tengo elementos como este:

<a> elemento con id = someGenerated Some: Same: 0: name

<a> elemento con id = someGenerated Algunos: Igual: 0: apellido

<a> elemento con id = someGenerated Some: Same: 1: name

<a> elemento con id = someGenerated Some: Igual: 1: apellido

Necesito un selector de CSS para obtener nombres. El problema es que no sé cómo conseguirlo. Lo intenté a[id*='Some:Same'], devolvió todos los <a>elementos. Después puedo obtener elementos cuya identificación termina con name. Pero no me gusta esta idea. Creo que se puede hacer con algún otro selector.

TarasLviv
fuente
¿Podría agregar algunos ejemplos reales de <a>etiquetas que desea seleccionar y las que no desea? Será más fácil ayudar a ver el código real.
andyb
No puedo agregar un ejemplo real, debido a la política confidencial :(
TarasLviv
Pero puedo explicarlo de otra manera. Los atributos de identificación contienen lo siguiente: algunos caracteres generados + algunos caracteres estáticos +: elementIndexInTable: + nombre de columna en la tabla
TarasLviv
¿Y cuáles son los criterios para los que quieres?
Tarken

Respuestas:

144

Prueba esto:

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

Esto le dará todos los aelementos con id que contienen

Algunos iguales

y tener la identificación terminada en

nombre

CosminO
fuente
Bueno, id * no funcionó para mí y decía que no se puede evaluar en un elemento web. Lo usé para encontrar iframe que tiene una identificación como <constant><variable><constant>nombre. //driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();donde FrameID es la parte inicial. De todos modos, //a[contains(@id,'Some:Same') and contains(@id,'name')]hizo el truco para mí. Entonces +1 a tu compañero.
anujin
2
Debe eliminar el selector XPath de esta respuesta, no agrega nada y solo está enturbiando las aguas
Liam
1
@CosminO ¿Necesitas el *siguiente id?
cokedude
@cokedude el operador * = significa que debe contener al menos el valor después del operador. Funciona en conjunto con la segunda condición de que debe terminar con algo más usando el operador $ = Vea esto para una explicación en profundidad w3schools.com/css/css_attribute_selectors.asp Respuesta corta. El * no está al lado de id, está al lado de = y forma un operador con un significado especial
CosminO
21
<div id='element_123_wrapper_text'>My sample DIV</div>

El operador ^ : coincide con los elementos que comienzan con un valor dado

div[id^="element_123"] {

}

El operador $: coincide con los elementos que terminan con un valor dado

div[id$="wrapper_text"] {

}

El operador *: coincide con elementos que tienen un atributo que contiene un valor dado

div[id*="wrapper_text"] {

}
Edicarlos Lopes
fuente
8

El único selector que veo es a[id$="name"](todos los enlaces con id terminando por "nombre") pero no es tan restrictivo como debería.

LeBen
fuente