Как найти xpath элемента?

#selenium #rselenium

Вопрос:

Я пытаюсь найти xpath svg то, что находится рядом с

 "//label[@class='btn btn-light p-1']/input[@value='star']
 

https://9qrcode.com/#link
затем выберите Дизайн

введите описание изображения здесь

Комментарии:

1. Что вы подразумеваете под «затем выберите дизайн»?

2. Кроме того, //label[@class='btn btn-light p-1']/input[@value='star'] не является уникальным локатором

3. когда вы откроете веб-сайт, затем нажмите кнопку «Дизайн», вы найдете шаблон, границу маркера, центр маркера, затем просмотрите источник страницы, вы увидите div, метку и ввод выше

Ответ №1:

Я ненавижу делать такие xpath, так как я согласен с Элиягу — такие xpath не будут уникальными…но раз вы спросили, вот, пожалуйста, это должно сработать для вас:

 //input[@value = 'star']/parent::label[contains(@class, 'btn-light')]/preceding-sibling::label[contains(@class, 'btn-light')]/*[name() = 'svg']
 

Ответ №2:

Вы можете использовать это xpath

 (//label[contains(@class,"btn btn-light")]/*[local-name() = 'svg'])[2]
 

вы можете указать свой номер элемента в замене [2].

Комментарии:

1. можем ли мы связать xpath с вводом[@value=’звезда’]???? т. е. я не хочу использовать [2], потому что, возможно, местоположение изменится

Ответ №3:

 //input[@value='star']/preceding::label[@class='btn btn-light p-1'][1]
 

Это приведет к получению предыдущего элемента перед значением звезды, которое, поскольку оно не уникально, даст два значения.