selenium XPath:如何单击“加载更多”按钮

k4ymrczo  于 2022-12-18  发布在  其他
关注(0)|答案(2)|浏览(141)

我正在尝试为一个大学公寓列表网站搜集校外公寓的名称和地址。我目前遇到的障碍是点击selenium中的“加载更多”按钮,每个搜索结果会出现x次。我是网络搜集的新手,我想知道是否有人能帮我点击这个按钮,直到它消失,这样我就可以使用beautifulsoup收集所有其他信息。
网址:https://www.rentcollegepads.com/off-campus-housing/mississippi-state/search

zlwx9yxi

zlwx9yxi1#

要单击元素Load More,需要为element_to_be_clickable()引入WebDriverWait,可以使用以下locator strategies之一:

  • 使用 *CSS选择器 *:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-success.btn-block > i.fa.fa-refresh"))).click()
  • 使用 XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-success btn-block' and contains(., 'Load More')]"))).click()

*注意:您必须添加以下导入:

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

mxg2im7a

mxg2im7a2#

我使用了另一个线程(How to loop a python action until a button is clickable (selenium)),并对其进行了一些修改,因为我最近有一个类似的任务:
您需要添加:

x_path="//button[@class='btn btn-success btn-block' and contains(., 'Load More')]"
while True:
    try:
        time.sleep(5)
        ActionChains(driver).move_to_element(driver.find_element(By.XPATH, xpath)).perform()

        if driver.find_element(By.XPATH, x_path).is_enabled():
            driver.find_element(By.XPATH, x_path).click()
            print('clicked')
        else:
            driver.refresh()
    except Exception as e:
        print(f'{e}')
        break

相关问题