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

Selenium定位表格含“Em aberto”行及获取对应“Visualizar”按钮咨询

Selenium定位目标行对应按钮实现方案

核心逻辑

你遍历到每一行时,只要确认当前行包含Em aberto状态,直接在当前row元素的范围内查找对应Visualizar按钮即可,不会匹配到其他行的同名按钮。

修正后的代码段

把你原来遍历行的部分替换成下面的代码即可:

# 前面的登录、切换iframe等原有代码保持不变
table_id = navegador.find_element_by_id('faturaspnl.orderedflextablemo.tabela')
rows = table_id.find_elements_by_tag_name("tr") 

for row in rows:
    # 先获取当前行所有列
    cols = row.find_elements(By.TAG_NAME, "td")
    # 跳过没有足够列的空行/表头行
    if len(cols) < 3:
        continue
    # 获取状态列的文本,你的场景下状态在索引为2的第三列,对应类名gwt-HTML的元素
    try:
        status_elem = cols[2].find_element(By.CLASS_NAME, "gwt-HTML")
        status_text = status_elem.text.strip()
        if "Em aberto" in status_text:
            # 找到目标行后,在当前行范围内查找Visualizar按钮
            # 若按钮id不重复可直接用id定位,若重复就换成类名、文本属性等相对定位
            visualizar_btn = row.find_element(By.ID, "g.image.visualizar")
            # 点击按钮触发下载
            visualizar_btn.click()
            # 只有1个待处理文件匹配到就退出循环,多个待处理就注释掉下面的break
            break
    except Exception as e:
        # 跳过当前行没有状态元素或者按钮的异常
        continue

注意事项

  • 如果你的表格里多个行的按钮id重复,把查找按钮的方式换成xpath相对定位即可,比如row.find_element(By.XPATH, ".//*[contains(@title,'Visualizar')]"),开头的.代表从当前行节点开始查找,是相对定位不找错其他行元素的核心
  • 后续可以把固定时长的sleep替换成Selenium的显式等待WebDriverWait,可以提升脚本稳定性,避免页面没加载完成就查找元素报错

内容的提问来源于stack exchange,提问作者José Eronaldo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:24:03