Я использую Java и Selenium. Дизайнеры HTML не дали действительно полезных идентификаторов. Мне нужно получить доступ к элементу со следующим:

<span id="gridcolumn-1040-textInnerEl" 

Я могу использовать

//span[contains(@id, 'gridcolumn') and (contains(@id, 'textInnerEl'))]

Для xpath, но это может быть сложно (это более простой пример). Есть ли способ использовать регулярное выражение в xpath, например:

//span[match(@id, '^gridcolumn-[%d]+-testInnerEl$']

Чтобы избежать нескольких и содержит (@id, ...)

1
Tony 24 Апр 2017 в 21:23

2 ответа

Лучший ответ

Попробуйте использовать ниже XPath для соответствия span по regex:

//span[matches(@id, '^gridcolumn-\d+-textInnerEl$')]
0
Andersson 24 Апр 2017 в 18:34

Сочетание трех функций starts-with(), substring-before() и substring-after() даст вам возможность выбрать нужный элемент:

//span[starts-with(@id, 'gridcolumn') and number(substring-before(substring-after(@id, '-'), '-')) = substring-before(substring-after(@id, '-'), '-') and substring-after(substring-after(@id, '-'), '-') = 'textInnerEl']
0
revo 24 Апр 2017 в 20:52
43595213