Не ищется элемент с помощью text(), если название содержит кавычки xpath selenium python

Рейтинг: 0Ответов: 1Опубликовано: 25.01.2023

Ищу элемент в браузере с помощью xpath запроса

//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='Экран "Рассчитанные цены"']

Ввожу этот запрос в среду разработки

driver.find_element('xpath', "//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='Экран "Рассчитанные цены"']")

Из-за того, что в названии присутствуют кавычки, этот запрос горит с ошибкой.

Как правильно заменить кавычки в данном случае, чтобы запрос отработал?

Ответы

▲ 0Принят

Вам нужно применить обратные кавычки (`) вместо обычных кавычек ("), чтобы экранировать текст внутри кавычек:

driver.find_element('xpath', '//*[@class = "CustomFieldValueGroupedList__value"]//*[text()="Экран `Рассчитанные цены`"]')

Либо можно использовать символ слеша () перед кавычками внутри текста

driver.find_element('xpath', "//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='Экран \"Рассчитанные цены\"']")

Есть еще такие варианты:

Использование апостроф (') вместо кавычек в тексте:

driver.find_element('xpath', "//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='Экран 'Рассчитанные цены'']")

сохранение текста в переменной:

search_text = "Экран 'Рассчитанные цены'"
driver.find_element('xpath', f"//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='{search_text}']")

метод translate для замены:

search_text = "Экран \"Рассчитанные цены\""
search_text = search_text.translate(str.maketrans({'"':'\''}))
driver.find_element('xpath', f"//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='{search_text}']")