Как дождаться полной прогрузки страницы selenium в python?

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

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

Как дождаться полной прогрузки страницы selenium в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@camren 

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


Пример кода с использованием явного ожидания:

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

driver.get("https://example.com")

# Явное ожидание до прогрузки элемента с id "my_element"
wait = WebDriverWait(driver, 10)
my_element = wait.until(EC.presence_of_element_located((By.ID, "my_element")))

# Далее работаем с элементом
my_element.click()


В этом примере мы используем WebDriverWait для ожидания до тех пор, пока элемент с id = "my_element" не загрузится на страницу. Мы указываем тайм-аут в 10 секунд (можно изменить в зависимости от потребностей) и ждем, пока элемент не будет найден с помощью presence_of_element_located метода класса expected_conditions. После этого можем работать с элементом.

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

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

@camren 

Есть несколько способов дождаться полной загрузки страницы в Selenium с помощью Python:

  1. Ждать определенное количество секунд:
1
2
3
4
5
6
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")
time.sleep(5) # ждем 5 секунд


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

  1. Ждать, пока элемент на странице не появится:
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

driver = webdriver.Chrome()
driver.get("https://www.example.com")

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


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

  1. Ждать, пока страница не прогрузится полностью:
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

driver = webdriver.Chrome()
driver.get("https://www.example.com")

wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.XPATH, "//html")))


Этот метод ожидает, пока тэг <html> не станет видимым на странице, что означает, что страница полностью прогрузилась.