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

Selenium如何在表格行中定位id为Newbutton的可点击按钮

可行定位方案

前置检查

在执行定位前先确认两个前提:

  • 元素不在嵌套的iframe/frame中,若存在iframe嵌套需先切换到对应iframe:driver.switch_to.frame("iframe的id/name索引")
  • 不要用强制休眠等待元素加载,推荐使用Selenium显式等待保证元素加载完成后再操作

定位代码实现

首先导入依赖模块:

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

方案1:ID直接定位(优先级最高,最稳定)

目标按钮本身带有唯一ID属性,直接用ID定位即可:

# 初始化显式等待,最长等待10秒
wait = WebDriverWait(driver, 10)
# 等待按钮可点击后返回元素对象
new_button = wait.until(EC.element_to_be_clickable((By.ID, "Newbutton")))
# 执行点击操作
new_button.click()

方案2:层级XPath定位(匹配你描述的位置规则)

按照「外层ID为wanInstTable_tbl的表格首个tr下第一个td内的New按钮」的规则写定位路径:

wait = WebDriverWait(driver, 10)
new_button = wait.until(EC.element_to_be_clickable((By.XPATH, '//table[@id="wanInstTable_tbl"]/tbody/tr[1]/td[1]/input[@value="New"]')))
new_button.click()

方案3:属性组合定位

如果ID存在动态变更的情况,可以结合class和按钮文本属性定位:

wait = WebDriverWait(driver, 10)
new_button = wait.until(EC.element_to_be_clickable((By.XPATH, '//input[@class="NewDelbuttoncss" and @value="New"]')))
new_button.click()

异常排查

如果依然定位失败可以按以下步骤排查:

  • 打开F12控制台执行document.querySelectorAll("#Newbutton"),确认页面是否存在多个相同ID的元素,若存在则在定位路径中增加父级元素限制缩小范围
  • 如果元素被其他浮层遮挡无法正常点击,可以用JS执行点击:
driver.execute_script("arguments[0].click();", new_button)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:01