首页 > 解决方案 > Python Selenium - 如何动态单击“加载更多”直到它消失?

问题描述

我正在浏览一个站点,该站点有一个加载更多按钮,我需要单击该按钮,直到它不再出现在站点上,我编写了以下代码,但不确定是否有比 WHILE 循环更好的处理方式. 是否有其他硒方法来处理这个问题?

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 方法,因此捕获了异常,因此可以正常工作。

标签: pythonselenium

解决方案


您可以将等待与 一起使用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()

推荐阅读