Почему селен не может найти что-либо в этом div? - PullRequest
1 голос
/ 24 апреля 2019

Селен не может найти ничего за <div id="content">.Даже если есть несколько слоев под этим div.Включая div, из которого мне нужно получить данные.

Чтобы попытаться напрямую получить элементы, в которых я заинтересован, я попробовал это:

departures = driver.find_elements_by_class_name('departure')
    for departure in departures:
        print(departure)

Когда вылеты продолжали отображаться в виде пустого спискаЯ начал смотреть, в какой момент селен не смог ничего найти.И обнаружил, что последний div, который он может найти, это <div id="content">

, затем я попытался получить innerHTML этого div:

content = driver.find_element_by_xpath('//*[@id="content"]')
print(content)
HTML = content.get_attribute("innerHTML")
print(HTML)

HTML - пустая строка, предполагая, чтоэто ничто в <div id="content">.

Важная часть HTML: https://pastebin.com/L5Giz0H0

В части HTML вы можете видеть, что <div id="content"><div id="OutboundDepartures" class="timetable"> - это одна строка.Но при проверке страницы в Firefox <div id="OutboundDepartures" class="timetable"> отображается как под-подраздел в <div id="content">

Полный HTML: https://pastebin.com/h07UpdqM

Как я могу получить данные из <div class="departure">Div, когда я не могу пройти <div id="content">?

1 Ответ

1 голос
/ 24 апреля 2019

Используйте WebDriverWait и CSS Selctor для получения всей информации.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 20)
items=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '#content div.departure')))

for item in items:
    print(item.text)

Вывод:

08:30 Sneldienst
reisduur ca 45 min. 0 meter vrij 353 pers. vrij
09:45 Veerdienst Ms. Friesland
reisduur ca 120 min. 297 meter vrij 678 pers. vrij
12:30 Sneldienst
reisduur ca 45 min. 0 meter vrij 322 pers. vrij
15:00 Veerdienst Ms. Friesland
reisduur ca 120 min. 175 meter vrij 708 pers. vrij
17:20 Sneldienst
reisduur ca 45 min. 0 meter vrij 365 pers. vrij
19:55 Veerdienst Ms. Friesland
reisduur ca 120 min. 196 meter vrij 731 pers. vrij
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...