Не ищется элемент с помощью text(), если название содержит кавычки xpath selenium python
Ищу элемент в браузере с помощью xpath запроса
//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='Экран "Рассчитанные цены"']
Ввожу этот запрос в среду разработки
driver.find_element('xpath', "//*[@class = 'CustomFieldValueGroupedList__value']//*[text()='Экран "Рассчитанные цены"']")
Из-за того, что в названии присутствуют кавычки, этот запрос горит с ошибкой.
Как правильно заменить кавычки в данном случае, чтобы запрос отработал?
Ответы (1 шт):
Автор решения: versetty777
→ Ссылка
Вам нужно применить обратные кавычки (`) вместо обычных кавычек ("), чтобы экранировать текст внутри кавычек:
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}']")