Selektor CSS (identyfikator zawiera część tekstu)


92

Mam pytanie. Mam takie elementy:

<a> element z id = someGenerated Some: Same: 0: name

<a> element z id = someGenerated Some: Same: 0: sename

<a> element z id = someGenerated Some: Same: 1: name

<a> element z id = someGenerated Some: Same: 1: sername

Potrzebuję selektora CSS, aby uzyskać nazwy. Problem w tym, że nie wiem, jak to zdobyć. Próbowałem a[id*='Some:Same']- zwróciło wszystkie <a>elementy. Po uzyskaniu elementów, których id kończy się na nazwę. Ale nie podoba mi się ten pomysł. Myślę, że da się to zrobić jakimś innym selektorem.


Czy mógłbyś dodać prawdziwe przykłady <a>tagów, które chcesz wybrać, i tych, których nie chcesz. Łatwiej będzie pomóc zobaczyć prawdziwy kod.
andyb

Nie mogę dodać prawdziwego przykładu z powodu polityki poufności :(
TarasLviv

Ale mogę to wyjaśnić w inny sposób. Atrybuty Id zawierają dalej: niektóre wygenerowane znaki + kilka znaków statycznych +: elementIndexInTable: + nazwa kolumny w tabeli
TarasLviv

A jakie są kryteria dla tych, których chcesz?
Tarken

Odpowiedzi:


144

Spróbuj tego:

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

W ten sposób otrzymasz wszystkie aelementy zawierające id

Niektórzy: to samo

i mieć identyfikator kończący się na

Nazwa


Cóż, id * nie działał dla mnie i powiedział, że nie można go ocenić na element sieciowy. Użyłem go do znalezienia elementu iframe, który ma id like <constant><variable><constant>name. //driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();gdzie FrameID jest częścią początkową. W każdym razie załatwił //a[contains(@id,'Some:Same') and contains(@id,'name')]mi sprawę. Więc dawaj +1 swojemu koledze.
anujin

2
Powinieneś usunąć selektor XPath z tej odpowiedzi, nie dodaje niczego i tylko mętnieje wody
Liam

1
@CosminO Czy potrzebujesz *następnej id?
cokedude

@cokedude operator * = oznacza, że ​​musi zawierać co najmniej wartość po operatorze. Działa w połączeniu z drugim warunkiem, że musi kończyć się czymś innym, używając operatora $ = Zobacz to, aby uzyskać szczegółowe wyjaśnienie w3schools.com/css/css_attribute_selectors.asp Krótka odpowiedź. Znak * nie znajduje się obok id, jest obok = i tworzy operator o specjalnym znaczeniu
CosminO

21
<div id='element_123_wrapper_text'>My sample DIV</div>

Operator ^ - Dopasuj elementy, które zaczynają się od podanej wartości

div[id^="element_123"] {

}

Operator $ - Dopasuj elementy, które kończą się podaną wartością

div[id$="wrapper_text"] {

}

Operator * - Dopasuj elementy, które mają atrybut zawierający daną wartość

div[id*="wrapper_text"] {

}

8

Jedyny selektor, jaki widzę, to a[id$="name"](wszystkie linki z identyfikatorem kończące się na „nazwa”), ale nie jest tak restrykcyjny, jak powinien.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.