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.


¿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


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"] {

}

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.