Селектор CSS (ідентифікатор містить частину тексту)


92

У мене є питання. У мене є елементи приблизно такі:

<a> елемент з ідентифікатором = деякий Створений Дещо: Те саме: 0: ім'я

<a> елемент з ідентифікатором = some Створено Дещо: Те саме: 0: прізвище

<a> елемент з ідентифікатором = деякий Створений Дещо: Те саме: 1: ім'я

<a> елемент з ідентифікатором = some Створено Дещо: Те саме: 1: прізвище

Мені потрібен селектор CSS, щоб отримати імена. Проблема в тому, що я не знаю, як це отримати. Я спробував a[id*='Some:Same']- він повернув усі <a>елементи. Після того як я можу отримати елементи, ідентифікатор яких закінчується на ім'я Але мені ця ідея не подобається. Я думаю, що це можна зробити за допомогою іншого селектора.


Не могли б ви додати кілька реальних прикладів <a>тегів, які ви хочете вибрати, і тих, які ви не хочете. Простіше буде допомогти побачити справжній код.
andyb

Я не можу додати реального прикладу через конфіденційну політику :(
TarasLviv

Але я можу пояснити це по-іншому. Атрибути id містять наступне: кілька сформованих символів + деякі статичні символи +: elementIndexInTable: + назва стовпця в таблиці
TarasLviv

А які критерії для тих, кого ви хочете?
Таркен,

Відповіді:


144

Спробуйте це:

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

Це дасть вам всі aелементи з ідентифікатором, що містить

Деякі: Те саме

і мають ідентифікатор, що закінчується на

ім'я


Ну, id * не працював у мене, і він сказав, що не може бути оцінений як веб-елемент. Я використовував його, щоб знайти iframe, який має ідентичне <constant><variable><constant>ім'я. //driver.findElements(By.xpath("//iframe[contains(@id*,'FrameID')]")).size();де FrameID є початковою частиною. У будь-якому випадку, //a[contains(@id,'Some:Same') and contains(@id,'name')]зробив фокус для мене. Тож +1 вам, приятель.
anujin

2
Вам слід видалити селектор XPath з цієї відповіді, він нічого не додає, а лише мутить воду
Ліам,

1
@CosminO Вам потрібен *наступний id?
кокедування

@cokedude оператор * = означає, що він повинен містити принаймні значення після оператора. Це працює разом з другою умовою, що воно повинно закінчуватися чимось іншим, використовуючи оператор $ = Див. Це для детального пояснення w3schools.com/css/css_attribute_selectors.asp Коротка відповідь. Значок * не поруч з ідентифікатором, він знаходиться поруч з = і утворює оператор із особливим значенням
CosminO

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

Оператор ^ - Збіг елементів, що починається з заданого значення

div[id^="element_123"] {

}

Оператор $ - Збіг елементів, що закінчується заданим значенням

div[id$="wrapper_text"] {

}

Оператор * - Збіг елементів, що мають атрибут, що містить задане значення

div[id*="wrapper_text"] {

}

8

Єдиний селектор, який я бачу, - це a[id$="name"](усі посилання з ідентифікатором, що закінчуються на "ім'я"), але він не такий обмежувальний, як повинен.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.