Seletor CSS (id contém parte do texto)

95

Eu tenho uma pergunta. Tenho elementos parecidos com este:

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

<a> elemento com id = someGenerated Some: Same: 0: sobrenome

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

<a> elemento com id = someGenerated Some: Same: 1: sobrenome

Preciso do seletor CSS para obter nomes. O problema é que não sei como fazer. Eu tentei a[id*='Some:Same']- ele retornou todos os <a>elementos. Depois posso obter elementos cujo id termina com nome. Mas não gosto dessa ideia. Acho que pode ser feito com algum outro seletor.

TarasLviv
fonte
Você poderia adicionar alguns exemplos reais de <a>tags que deseja selecionar e aqueles que não deseja. Será mais fácil ajudar a ver o código real.
andyb
Não posso adicionar um exemplo real, por causa da política confidencial :(
TarasLviv
Mas posso explicar de outra maneira. Os atributos de ID contêm a seguir: alguns caracteres gerados + alguns caracteres estáticos +: elementIndexInTable: + nome da coluna na tabela
TarasLviv
E quais são os critérios para quem você deseja?
Tarken

Respostas:

146

Experimente isto:

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

Isso lhe dará todos os aelementos com id contendo

Algo do mesmo

e ter o id terminando em

nome

CosminO
fonte
Bem, id * não funcionou para mim e dizia que não pode ser avaliado para um elemento da web. Usei-o para encontrar iframe que tem id como <constant><variable><constant>nome. //driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();onde FrameID está começando parte. De qualquer forma, //a[contains(@id,'Some:Same') and contains(@id,'name')]fez o truque para mim. Então, +1 para você, companheiro.
anujin
2
Você deve remover o seletor XPath desta resposta, ele não está adicionando nada e está apenas turvando as águas
Liam
1
@CosminO Você precisa do *próximo id?
cokedude
@cokedude o operador * = significa que ele deve conter pelo menos o valor após o operador. Ele funciona em conjunto com a segunda condição de que deve terminar com outra coisa usando o operador $ = Veja isto para uma explicação detalhada w3schools.com/css/css_attribute_selectors.asp Resposta curta. O * não está próximo a id, está próximo a = e forma um operador com significado especial
CosminO
23
<div id='element_123_wrapper_text'>My sample DIV</div>

O operador ^ - Corresponde aos elementos que começam com um determinado valor

div[id^="element_123"] {

}

O Operador $ - Corresponde aos elementos que terminam com um determinado valor

div[id$="wrapper_text"] {

}

O operador * - corresponde a elementos que têm um atributo contendo um determinado valor

div[id*="wrapper_text"] {

}
Edicarlos Lopes
fonte
8

O único seletor que vejo é a[id$="name"](todos os links com id terminando por "nome"), mas não é tão restritivo quanto deveria.

LeBen
fonte