Как заставить selenium ждать загрузки страницы?

Пользователь

от lilla.herman , в категории: Другие , 2 года назад

Как заставить selenium ждать загрузки страницы?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ludie , 2 года назад

@lilla.herman 

Для ожидания загрузки страницы в Selenium Python можно использовать метод WebDriverWait. Например, чтобы ждать, пока элемент с определенным идентификатором загрузится на странице, можно использовать такой код:

1
2
3
4
5
6
7
8
9
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Ожидаем загрузки элемента с id = "myElement"
# и ждем не более 10 секунд
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myElement"))
)


Здесь driver - это объект WebDriver, который инициализируется в начале вашего сценария. Метод WebDriverWait ждет до тех пор, пока элемент с заданным локатором (здесь id = "myElement") не будет найден на странице, или пока не истечет время ожидания (10 секунд в данном примере). В конце мы получаем элемент и присваиваем его переменной element. Теперь этот элемент готов для дальнейшего использования в вашем сценарии.

Пользователь

от alisa.bahringer , 6 месяцев назад

@lilla.herman 

Также вы можете использовать функцию "implicitly_wait" для задания неявного времени ожидания, которое будет применяться ко всем элементам на странице. Например:

1
driver.implicitly_wait(10) # Устанавливаем неявное время ожидания в 10 секунд


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


Обычно рекомендуется использовать явные ожидания (WebDriverWait) для более точного управления временем ожидания элементов на странице, но неявное время ожидания может быть полезным в некоторых случаях.