Использование начинается с в вашем случае OP.
Вот xpath, который вы можете использовать.
var rows = driver.FindElements(By.XPath("//*[starts-with(@id,'mr-name-')]"));
Вы должны использовать starts-with
вэтот сценарий в качестве первой части id
соответствует.Ниже приведены общие обозначения
//tag[starts-with(@attribute,'first_static_part_in_attribute_value')]
, оканчивающиеся на? Что делать, если динамическое содержимое находится в начале значения атрибута.
ends-with
- это опция в xpath 2.0, но большинство распространенных браузеров, таких как Chrome, Firefox, поддерживают xpath 1.0.Таким образом, мы должны обойти все вокруг, чтобы достичь результата, похожего на результат, используя string-length
, substring
и =
.Ниже приведен пример.
Пример HTML:
<html>
<body>
<button id="mr-name-7895874">Dynamic content at the end 1</button>
<button id="7895234-mr-name">Dynamic content at the start 1</button>
<button id="104-mr-name">Dynamic content at the start 2</button>
<button id="789523499-mr-name">Dynamic content at the start 3</button>
<button id="mr-name-74">Dynamic content at the end 2</button>
</body>
</html>
Теперь у вас есть 3 кнопки с динамическим номером в начальной позиции, но статический текст -mr-name
находится в конце.Таким образом, мы должны найти 3 кнопки, где id оканчивается на '-mr-name` .
Xpath 1.0: аналогично заканчивается в xpath 2.0
//*[substring(@id, string-length(@id) - string-length('-mr-name') +1) = '-mr-name']
Посмотрим, как это работает.Для понимания цели рассмотрим 104-mr-name
в качестве значения идентификатора.
- string-length (@id): Здесь будет определена длина значения атрибута id (11 символов).
- string-length ('- mr-name'): Здесь будет найдена длина строки, которую мы проверяем (8 символов).
- substring (@ id, начальная_позиция): Здесь начальная позиция равна (11-8) + 1 = 4 (мы добавляем 1, чтобы не пропустить первый символ
-
). - Последний шаг - сравнить обе подстроки с ожидаемой статической строкой (здесь
-mr-name
является статической строкой) с использованием =
.
Снимок экрана:
![enter image description here](https://i.stack.imgur.com/t5y10.gif)