如何在Selenium Python中定位相同class不同ID的元素并依次点击
解决方案
浏览器控制台原生JS实现(直接在F12开发者工具的控制台运行即可)
用组合类选择器精准匹配所有目标按钮,遍历点击时增加间隔避免触发反爬,同时会打印点击的按钮序号和对应任务ID方便核对:
// 匹配所有符合class要求的a标签元素 const taskBtns = document.querySelectorAll('a.do.do-task.btn.btn-sm.btn-primary.btn-block'); // 依次点击,默认间隔1秒,可自行修改setTimeout的第二个参数调整间隔时长 taskBtns.forEach((btn, idx) => { setTimeout(() => { btn.click(); console.log(`已点击第${idx + 1}个按钮,对应任务ID:${btn.dataset.taskId}`); }, idx * 1000); })
Python Selenium 自动化脚本实现
适合批量自动化操作场景:
from selenium import webdriver from selenium.webdriver.common.by import By import time driver = webdriver.Chrome() # 此处省略访问目标页面的代码 # 定位所有目标按钮 task_btns = driver.find_elements(By.CSS_SELECTOR, 'a.do.do-task.btn.btn-sm.btn-primary.btn-block') for idx, btn in enumerate(task_btns): btn.click() print(f"已点击第{idx+1}个按钮,对应任务ID:{btn.get_attribute('data-task-id')}") time.sleep(1) # 点击间隔可自行调整
注意事项
- 如果点击操作会触发页面刷新或跳转,不要复用第一次获取的元素列表,每次页面加载完成后需要重新获取元素再操作,否则会报元素失效错误
- 如果元素是动态加载渲染的,需要增加等待逻辑,等所有目标元素都加载完成后再执行定位操作
- 点击间隔不要设置过短,避免触发站点反爬机制导致操作失败
内容的提问来源于stack exchange,提问作者Mohammad Khalouf7
相关产品推荐
相关产品推荐

