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
相关产品推荐
相关产品推荐

