Python Selenium - Как динамически нажимать на Load More, пока он не разочарует? - PullRequest
1 голос
/ 22 апреля 2020

Я просматриваю сайт, и на нем есть кнопка «Загрузить еще», на которую нужно нажимать, пока она больше не появляется на сайте. Я написал код ниже, но не уверен, что есть лучший способ справиться, чем пока l oop. Существуют ли другие методы селена, чтобы справиться с этим?

driver.get(url)
while driver.find_element_by_xpath("//xpath").is_displayed():
    try:
        loadmore = driver.find_element_by_xpath("//xpath")
        loadmore.click()
    except Exception as e:
        break

это работает, но я получаю, что у объекта 'NoneType' нет атрибута 'is_displayed', после того, как он сделан со всеми щелчками, я написал другой код

while True:  
    try:
        loadmore = driver.find_element_by_xpath("//xpath")
        loadmore.click()
    except Exception as e:
        break

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

1 Ответ

1 голос
/ 22 апреля 2020

Вы можете использовать ждет с expected_conditions, то есть:

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

driver = webdriver.Chrome()
driver.get('theurl')

wait = WebDriverWait(driver, 10) # increase the timeout as needed
el = wait.until(ec.visibility_of_element_located((By.XPATH, "//xpath")))
el.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...