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

如何在Python中循环使用CSS选择器遍历45个列表?

解决Python Selenium循环处理45个列表项的问题

你的思路是对的,只需要用循环遍历1到45的索引,替换CSS选择器里的固定序号即可。原代码里有重复的点击操作,还缺少元素加载等待的逻辑,我帮你修正并优化了代码:

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

# 循环处理1到45号列表项(CSS的:nth-child从1开始计数)
for i in range(1, 46):
    # 等待目标链接可点击,避免页面加载慢导致报错
    target_link = WebDriverWait(browser, 10).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, f"ul.list_basis li.dragons:nth-child({i}) .dragonchild a.link"))
    )
    target_link.click()

    # 切换到新打开的窗口
    browser.switch_to.window(browser.window_handles[1])

    # 等待列表元素加载完成
    items = WebDriverWait(browser, 10).until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.classname11'))
    )

    # 提取每个item的名称和编号信息
    for item in items:
        name = item.find_element(By.CSS_SELECTOR, '.classname12 > .classname13').text
        number = item.find_element(By.CSS_SELECTOR, '.classname14').text
        print([name, number])

    # 关闭当前窗口,切回原页面窗口
    browser.close()
    browser.switch_to.window(browser.window_handles[0])

关键修改说明:

  • 移除了原代码中重复的li.dragons:nth-child(1)点击操作,只保留带{i}的动态选择器,避免重复打开窗口
  • 添加了显式等待(WebDriverWait),替代直接查找元素的写法,防止页面未加载完成时出现NoSuchElementException错误,让代码更稳定
  • 改用By.CSS_SELECTOR的方式调用元素查找方法,这是Selenium 3.x及以上版本推荐的规范写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:21:01