Как я могу запретить Selenium слишком быстро нажимать кнопку «Показать больше» перед загрузкой нового контента?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу запретить Selenium слишком быстро нажимать кнопку «Показать больше» перед загрузкой нового контента?

Сообщение Anonymous »

Я пытаюсь получить данные с футбольного сайта с помощью Selenium, и мне нужно несколько раз нажать кнопку «Показать больше», чтобы загрузить все матчи. Кнопка исчезает во время загрузки и заменяется анимацией загрузчика, но мой скрипт слишком быстро нажимает кнопку подряд, прежде чем новый контент полностью загрузится. Это приводит к множественным кликам без фактической загрузки данных.

Код: Выделить всё

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchElementException
import time

service = Service("C:\\Users\\sddd\\Downloads\\chromedriver-win64\\chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.get("https://oddspedia.com/football")

try:
# Accept cookies
cookie_button = WebDriverWait(driver, 5).until(
EC.element_to_be_clickable((By.XPATH, '//button[@class="cookie-popup__btn"]'))
)
cookie_button.click()
print("Cookies accepted.")

while True:
try:
show_more_button = WebDriverWait(driver, 5).until(
EC.visibility_of_element_located((By.XPATH, '//div[@class="ml-show-more-btn"]/button'))
)
show_more_button.click()
print("Clicked 'Show more' button.")

WebDriverWait(driver, 2).until(
EC.presence_of_element_located((By.CLASS_NAME, 'loader'))
)

WebDriverWait(driver, 10).until(
EC.invisibility_of_element_located((By.CLASS_NAME, 'loader'))
)

time.sleep(1)  # Optional: slight pause to ensure content is ready
print("Loading completed, ready for next click.")

except TimeoutException:
print("No more 'Show more' button or page loading timeout.")
break

except NoSuchElementException:
print("Element not found.")
finally:
driver.quit()

Как я могу изменить этот скрипт, чтобы Selenium ждал загрузки нового контента, прежде чем снова нажать кнопку «Показать больше»? Есть ли более эффективные способы убедиться, что страница завершила загрузку новых данных, прежде чем пытаться сделать следующий клик?

Подробнее здесь: https://stackoverflow.com/questions/791 ... y-before-n
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»