You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium无法点击Google开发者社区网站元素的问题求助

问题:Selenium无法点击Google开发者社区的“加载更多”按钮获取过往活动数据

我尝试获取Google开发者社区(GDG Albuquerque)的所有过往活动数据,但在使用Selenium点击“加载更多”按钮时遇到了问题,无法触发加载操作。以下是我的实现代码:

from bs4 import BeautifulSoup
import pandas as pd
import re
import os
import time
import requests
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.options import Options
import time

chrome_options = Options()
# chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("--log-level=3")

driver = webdriver.Chrome()
driver.get("https://gdg.community.dev/gdg-albuquerque/")

master_df = pd.DataFrame()
buttons = driver.find_elements(By.CSS_SELECTOR, "div.button-styles__buttonHover_n4oye")
if len(buttons) == 9: # If total buttons available are 9 (then load more will be there)
    for index, button in enumerate(buttons):
        if index == 7: # Find load more button
            WebDriverWait(driver, 5)
            clickable_button = button.find_element(By.CSS_SELECTOR, "div.Layout-styles__flexContainer_77byt")
            clickable_button.click()

修复方案

  1. 替换脆弱的索引定位方式
    通过索引定位元素极易受页面结构变化影响,建议直接通过元素文本或更精准的选择器定位“加载更多”按钮:
# 等待并定位包含"Load More"文本的按钮(根据页面实际语言调整)
load_more_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//div[contains(text(), 'Load More')]"))
)
load_more_btn.click()
  1. 正确使用显式等待
    原代码中的WebDriverWait(driver, 5)未指定等待条件,无法确保元素状态就绪。必须结合预期条件等待元素可点击:
# 等待目标按钮可点击
clickable_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "div.button-styles__buttonHover_n4oye div.Layout-styles__flexContainer_77byt"))
)
clickable_button.click()
  1. 处理元素遮挡或不可见问题
    如果按钮不在当前视图内或被其他元素遮挡,可通过以下方式解决:
  • 滚动到元素位置再点击:
ActionChains(driver).move_to_element(clickable_button).perform()
clickable_button.click()
  • 使用JavaScript强制点击:
driver.execute_script("arguments[0].click();", clickable_button)
  1. 启用Chrome配置项
    原代码创建了chrome_options但未传入驱动,导致配置未生效,修改驱动初始化代码:
driver = webdriver.Chrome(options=chrome_options)

内容的提问来源于stack exchange,提问作者Rahul Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:55:16