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.


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


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

}

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.