Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

xpath
python
webdriver
Теги: #<Tag:0x00007f7b6267b6c0> #<Tag:0x00007f7b6267b4e0> #<Tag:0x00007f7b6267b3a0>

#1

Привет всем,
Как можно найти текст после его добавки. Текст был добавлен с текстового фала.
Пытаюсь найти его после добавки через 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:


(Konstantin) #2

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


(Ярослав Бойко) #3
//*[contains(text(), 'твой текст')]

#4

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


(Дмитрий Назаренко) #5

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


#6

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


(Artur Korobeynyk) #7

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


#8

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


(rmerkushin) #9

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


#10

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


(Artur Korobeynyk) #11

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


#12

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


(rmerkushin) #13

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


#14

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

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


(rmerkushin) #15

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


#16

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

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


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

#18

Не идет:pensive:


(rmerkushin) #19

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


#20

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