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

Python/Selenium:如何点击无id和class属性的目标元素

可用定位方案

你要点击的目标是绑定了点击事件的<article>标签,以下是几种稳定性较高的定位方式,均适配Selenium 4.x 官方推荐的By类写法(旧版find_element_by_*方法已废弃,不建议使用):

1. 通过onclick属性定位(优先推荐)

该属性值唯一标识当前元素,定位准确率最高:

# 先导入By类
from selenium.webdriver.common.by import By

# 定位并点击
driver.find_element(By.CSS_SELECTOR, "article[onclick=\"mainPrincipalPage.PerformCallback('Registro');\"]").click()

2. 通过子文本定位

如果onclick属性会动态变化,可以通过内部固定的文本值定位父元素:

driver.find_element(By.XPATH, "//article[.//span[text()='Registro horario']]").click()

3. 通过图标资源定位

也可以通过内部固定的svg图标路径定位:

driver.find_element(By.XPATH, "//article[.//img[contains(@src, 'iconRegistroHorario.svg')]]").click()

常见问题排查

如果出现找不到元素的报错,按以下顺序排查:

  • 加显式等待避免元素还没加载完成就执行定位:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,直到元素可点击再执行操作
wait = WebDriverWait(driver, 10)
target_btn = wait.until(EC.element_to_be_clickable(
    (By.CSS_SELECTOR, "article[onclick=\"mainPrincipalPage.PerformCallback('Registro');\"]")
))
target_btn.click()
  • 检查元素是否嵌套在iframe标签内,若是需要先调用driver.switch_to.frame()切换到对应iframe再执行定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:04