t.me/atinfo_chat Telegram группа по автоматизации тестирования

как можно найти текст который был добавлен?

Теги: #<Tag:0x00007f9afb316710> #<Tag:0x00007f9afb316620> #<Tag:0x00007f9afb316508>

Привет всем,
Как можно найти текст после его добавки. Текст был добавлен с текстового фала.
Пытаюсь найти его после добавки через xpath тест рушится:

c = open("/home/andrey/PycharmProjects/test/vspgroup.local/forTest/news/newTextIntroduction.txt").read().decode(‘utf8’)

browser.find_element_by_xpath("//*[text()=’%s’]" % c)

ошибка:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:

//*[contains(.,‘TEXT’)];

//*[contains(text(), 'твой текст')]

пробывал не идет

Попробуйте перезагрузить страницу, после добавления текста, и потом его искать. Если проблема решится, то можно будет подумать о механизме ожидания без перезагрузки.

Не идет. Если искать только одно слово дает или даже текст. А вот с переменой не хочет читать почему-то, хотя текст один и тот же

Исходный текст в каком формате? UTF-8?
Спец символы html в тектсе заескейплены?
Двойные пробелы в тексте есть?
Табуляция есть?
Знаки конца строки есть?

формат utf-8
А вот насчёт Двойные пробелы + Табуляция + Знаки конца строки есть но я пробовал их обрубить с strip()

В самом xpath есть что то вроде normalize text функция, убирает лишние пробелы

Тоже не помогает. Самое странное, что пару слов с текста можно найти а вот с переменной не как не идет, хотя это один и тот же текст

Текст не идентичен. Проверьте. Откройте вашу веб страничку с текстом в виде кода (inspect в гугл хром). Скопируйте текст оттудова и сравните с вашим. Учитывайте двойные пробелы тоже. Я почему-то уверен что либо дело в них либо вы не фильтруете специальные символы для HTML.

Я нашло что там есть теги br.
Как их можно убрать при проверки текста?

Не убирайте их. Вставляйте в текст \n должно канать.
P.S.: функция xpath для убирания лишних пробелов normalize-space(string?)

Можно пример как можно эту функцию записать? Я думаю, что я ее не правильно использую.
Например как я могу записать это с normalize-space?

browser.find_element_by_xpath("//div[@class=‘intro’][contains(text(),’%s’)]" % c)

Функцию текст оберните в неё и все)

Сейчас вообще мне не дает, даже слово не может найти:

//div[@class=‘intro’][normalize-space(text(),‘Contrary’)]

*//div[@class='intro'][contains(normalize-space(text()),'someText')]

Не идет:pensive:

xpath не корректный. смотрите ниже как написал @Mes

Проблема что у меня есть теги в нутрии текста, который уже находится в сайте. Я думаю вытащить текст с сайта вложить его в переменную сделать ему replace() и сравнить текст.