Xpath с подстановочными знаками между id и divs? - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь ввести данные в таблицу, используя Robot Framework. У таблицы есть идентификатор, но он меняется каждый раз, когда я загружаю страницу (это какой-то UUID), поэтому я не могу использовать его в качестве «якоря» для своего xpath. Однако для этой таблицы есть заголовок, который кажется разумным начать с фиксированного идентификатора. Между заголовком и таблицей есть пара элементов div. Итак, что-то вроде этого (некоторая смесь псевдокода и того, что я получаю, когда копирую селектор и xpath в Chrome), чтобы попасть в первую ячейку в первой строке таблицы:

//*[@id="heading"] (a bunch of divs) /*[@id="random string of letters"]/div[3]/div/div/div[2]

Я хотел бы написать xpath, который выглядел примерно так

//*[@id="heading"] [wildcard for the random ID and divs] /div[3]/div/div/div[2]

Как мне написать это?

Спасибо.

1 Ответ

0 голосов
/ 10 ноября 2018

Если только один элемент внутри «заголовка» содержит атрибут id, вы можете использовать

//*[@id="heading"]//*[@id]/div[3]/div/div/div[2]

Если существует более одного элемента с атрибутом id, вам нужно что-то большее, например, если он содержит определенный тег

//*[@id="heading"]//*[contains(@id, "tag")]/div[3]/div/div/div[2]

или (если используется xpath 2.0), и только этот @id содержит uuid в заголовке

//*[@id="heading"]//*[matches(@id,"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")]/div[3]/div/div/div[2]

В противном случае вам придется попытаться найти что-то уникальное (в контексте «заголовка»), чтобы начать поиск div[3]/div/div/div[2] (если вам повезет) div[3]/div/div/div[2] достаточно уникален.

...