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

如何使用Selenium(Python)遍历动态表格行并点击指定按钮?

遍历动态表格并点击每行按钮(Selenium)

先纠正表格定位的小问题

你之前用find_elements返回的是元素列表,但这里目标是单个表格,应该用find_element获取单个WebElement,后续基于它定位子元素会更稳定:

# 定位目标表格
table = driver.find_element(By.XPATH, "/html/body/div/div[1]/div[3]/main/div/div/div/div[2]/div/div/div[2]/div/table")

遍历表格行并点击按钮

直接基于表格元素定位所有行,再逐行找第二列的按钮操作,全程用XPATH,适配动态变化的行数:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 获取表格内所有数据行(如果表头是<th>标签,直接用.//tr即可;如果表头是<tr>,就用.//tr[position()>1]跳过第一行)
rows = table.find_elements(By.XPATH, ".//tr")

for row in rows:
    try:
        # 等待当前行第二列的按钮可点击(处理动态加载)
        target_button = WebDriverWait(row, 10).until(
            EC.element_to_be_clickable((By.XPATH, ".//td[2]//button"))
        )
        target_button.click()
        
        # 注意:如果点击后页面跳转/弹窗,要先处理再继续遍历
        # 比如跳转后返回原页面:driver.back()
        # 或者关闭弹窗:driver.find_element(By.XPATH, "弹窗关闭按钮XPATH").click()
    except Exception as e:
        print(f"该行按钮操作失败: {str(e)}")
        continue

关键注意点

  • 用相对XPATH(.//开头):基于表格/行元素定位子元素,比绝对XPATH更抗页面结构变化。
  • 强制等待元素可点击:用WebDriverWait代替time.sleep(),避免因元素未加载完成导致的失败。
  • 处理页面状态变化:点击按钮后如果页面跳转或弹出窗口,必须先恢复到表格所在页面,否则后续行的元素会定位失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:35:40