Как однозначно идентифицировать xpath для нескольких тегов и нескольких значений

У меня следующий html:

<div class=‘content active’>
    <div>
        <div class=‘var’>
            <div class=‘field var-field’>
                <label>Interface Name</label>
                <div class=‘ui input’>
                    <input type=‘input’ placeholder=‘.*’ value> ==$0
                </div>
            </div>
        </div>
    </div>
    <div>
        <div class=‘var’>
            <div class=‘field var-field’>
                <label>Neighbor Id</label>
                <div class=‘ui input’>
                    <input type=‘input’ placeholder=‘.*’ value> ==$0
                </div>
            </div>
        </div>
    </div>
</div>

Мне нужно отправить текст в текстовое поле с меткой: Имя интерфейса. Есть ли способ однозначно написать xpath для отправки текста в текстовое окно. Обратите внимание, что единственный способ однозначной идентификации - это этикетка. Остальные поля тега одинаковы для обоих. Я пробовал использовать оператор И. Не повезло. Пожалуйста, помогите мне здесь.

Что вы имеете в виду под input type=‘input’? И, пожалуйста, покажите нам XPath, который вы пробовали. Это работает?

user9455968 02.05.2018 12:23

@ Лутц Хорн. Даже я чувствовал это очень странно. Я не занимался разработкой этого веб-сайта. Это как-то работает. На данный момент я просто щелкаю элемент правой кнопкой мыши, затем копирую xpath и указываю * для максимально возможного покрытия иерархии. т.е. xpath: // * / div [2] / div [1] / div / div / div / input Очевидно, это работает, но я знаю, что это очень плохое решение. Следовательно попросил решение.

Anuttam Adhwaryu 15.05.2018 22:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
378
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать этот XPATH: - //*[text()='Interface Name']/following-sibling::div/input"

Ответ принят как подходящий

Попробуй это :

//label[text()='Interface Name']/following-sibling::div/child::input 

Работает как шарм !! Большое спасибо !!

Anuttam Adhwaryu 28.05.2018 11:10

Чтобы отправить текст элементу <input> относительно тега <label>, вы можете создать функцию следующим образом:

def test_me(myText):
        driver.find_element_by_xpath("//label[.='" + myText + "']//following::div[1]/input").send_keys("hello")

Теперь вы можете вызвать эту функцию из любого места в вашем скрипте следующим образом:

test_me("Interface Name")
# or
test_me("Neighbor Id")

Другие вопросы по теме