Python selenium xpath получение текста пуст

Итак, у меня есть этот ссылка на сайт, и я пытаюсь получить текст из этого XPath //div[@class='titlu'], но по какой-то причине иногда я получаю текст, как он должен быть, а в других случаях я получаю пустую строку, даже если сайт содержит это текст.

Что я пробовал:

wait = WebDriverWait(self.driver, 10)   
wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Ap. de lux 3 ")))
e = self.driver.find_element_by_xpath(html_data.xpath)

также:

wait = WebDriverWait(self.driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH, xpath)))
e = self.driver.find_element_by_xpath(xpath)

а также я использовал и этот тип ожидания:

self.driver.implicitly_wait(10)

Как я получаю текст в данный момент:

self.driver.find_element_by_xpath(xpath).text

проблема, с которой я столкнулся здесь, заключается в том, что текст в некоторых случаях отказывается появляться, а в других появляется, даже если на самом деле XPath найден и уже существует. Может быть, не загружается полностью, может ли кто-нибудь из вас дать мне совет, как я могу это исправить?

Обновлено:

Кроме того, я пытаюсь получить местоположение и размер этого с помощью селена, но оба они будут равны 0. Любая идея, как я могу это исправить?

with, height = self.driver.find_element_by_xpath(html_data.xpath).size x, y = self.driver.find_element_by_xpath(html_data.xpath).location

Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 833
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

первый элемент //div[@class='titlu'] скрыт, и вы не получите значения при использовании .text, потому что он будет извлекать только видимый текст, использовать .get_attribute('textContent') или выбирать второй элемент.

Что ж, спасибо, это работает, но у меня есть еще один вопрос: вы знаете, как я могу получить также позицию этого xpath с помощью селена? Я имею в виду, что если я просто понимаю, что self.driver.find_element_by_xpath(html_data.xpath).location[‌​'x'] не будет работать, я имею в виду, что значение X или Y будет 0 в обоих случаях

Vali 25.11.2018 03:05

вы не можете получить позицию скрытого элемента. лучше создать новый пост, если у вас есть другая проблема.

ewwink 25.11.2018 03:28

Вы можете выполнить скрипт для доступа. Я узнал об этом методе из ответа @pguardiario

from selenium import webdriver

d = webdriver.Chrome()
d.get("https://www.imobiliare.ro/inchirieri-apartamente/sibiu/hipodrom-4/apartament-de-inchiriat-3-camere-X84T100B2?lista=2361394")
items = d.execute_script("return [...document.querySelectorAll('div.titlu')].map(item => item.innerText)")
print(items)
d.quit()

Ответ @QHarr возвращает требуемый результат (+1), но в качестве альтернативы тот же результат может быть получен с помощью обычного подхода без использования исполнителя JavaScript:

from selenium import webdriver

d = webdriver.Chrome()
d.get("https://www.imobiliare.ro/inchirieri-apartamente/sibiu/hipodrom-4/apartament-de-inchiriat-3-camere-X84T100B2?lista=2361394")
items = [item.get_attribute('innerText') for item in d.find_elements_by_xpath("//div[@class='titlu']")]
print(items)
d.quit()

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