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

Python Selenium遍历li重复、无顺序匹配姓名点击复选框问题求解

Selenium动态考勤列表匹配问题

初始异常现象

使用Selenium开发考勤自动化脚本,预期功能为读取页面展示的人员姓名,匹配到目标姓名后点击对应复选框。脚本运行时出现异常:反复点击第一个复选框,排查后确认逻辑仅会重复读取第一个<li>元素的内容。
页面对应基础HTML结构如下:

<div class="members">
  <ul class="memberlist"></ul>
</div>

页面中的<li>列表项是通过fetch API从数据库拉取数据后动态渲染生成的,最初编写的两段测试代码运行后,均只会重复输出第一个<li>元素的内容:

for i in range(len(df)):
    print(driver.find_element(By.XPATH,".//ul[@class='memberlist']/li/p").text)

for i in range(len(df)):
    print(driver.find_element(By.CLASS_NAME,"name").text)

此前尝试参考同类问题的排查方案,未找到正确的修正语法。

阶段性调整后的待解决问题

调整元素定位逻辑后,已经可以正常读取所有列表内的人员姓名,当时编写的姓名匹配+复选框点击代码如下:

for i in range(len(df)):
    # 匹配表格姓名与网页中class为name的元素文本
    if df['name'][i]==driver.find_elements(By.CLASS_NAME,"name")[i].text:
        driver.find_elements(By.CLASS_NAME, week)[i].click()
        print(driver.find_elements(By.CLASS_NAME,"name")[i].text)
    else:
        print('No match')

上述代码存在明显缺陷:强依赖Excel考勤表的姓名顺序与网页列表渲染顺序完全一致,只要两边顺序出现错位就会匹配失败,输出No match。需要实现不依赖列表顺序的匹配逻辑:遍历每个待考勤姓名时可在全页面范围搜索匹配,匹配成功后点击对应人员的复选框。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:09:20