Selenium Python | Ждать загрузки всей страницы, не зависит от динамического элемента

#python #selenium #python-requests #data-science

#python #selenium #python-запросы #наука о данных

Вопрос:

Я видел похожие вопросы на это, но никто не дал мне четкого ответа о том, возможно ли, чтобы Selenium знал, загружена ли вся страница или нет.

Я знаю, expected_conditions.visibility_of_element_located((By.TAG_NAME, "div")) но я не хочу, чтобы динамический элемент искал. Я также не хочу ждать заданное количество секунд, мне нужно, чтобы программа продолжалась, как только будет загружена вся страница.

Возможно ли это?

Ответ №1:

Вы можете использовать selenium WebDriverWait:

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

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")

element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
 

В приведенном выше коде Selenium будет ждать максимум 10 секунд, пока будет найден элемент, соответствующий заданным критериям. Если за это время элемент не найден, выдается исключение TimeoutException.

Или вы можете использовать модуль time:

 import time 
time.sleep(10)
 

В приведенном выше коде программа будет ждать 10 секунд, прежде чем выполнить следующую строку.