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

如何逐个点击所有匹配指定CSS选择器的Selenium页面元素?

问题解决方案

错误原因

find_elements_by_css_selector()方法返回的是符合匹配规则的WebElement元素列表,列表本身没有click()方法,所以原有代码无法运行,也实现不了逐个点击的需求。

基础实现(点击后页面无刷新/跳转场景)

遍历获取到的元素列表,对每个单独的元素调用点击方法即可:

# 获取所有匹配的单选菜单项元素
menu_radio_items = self.driver.find_elements_by_css_selector('div[role="menuitemradio"]')
# 逐个点击
for radio_item in menu_radio_items:
    radio_item.click()

兼容场景(点击后页面刷新/元素重新渲染场景)

如果点击任意元素后页面会刷新、或者元素列表会重新渲染,之前拿到的元素引用会失效报错,需要每次点击前重新获取元素列表:

# 先获取元素总数量
item_total = len(self.driver.find_elements_by_css_selector('div[role="menuitemradio"]'))
for index in range(item_total):
    # 每次重新获取列表,取对应下标的元素
    target_item = self.driver.find_elements_by_css_selector('div[role="menuitemradio"]')[index]
    target_item.click()
    # 若点击后有加载等待,可按需添加等待逻辑

可选优化

如果元素存在未加载完成、被遮挡等不可点击的情况,可以在点击前增加显式等待判断,确保元素可交互后再执行点击操作,避免触发异常。

内容的提问来源于stack exchange,提问作者Jhon tech

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:24:01