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

如何使用Python Selenium依次点击同类别名的按钮?

如何依次点击两个类名相同的按钮?

你当前的代码问题在于,每次用EC.presence_of_element_located只会定位到第一个匹配的按钮元素,所以两次执行的都是点击同一个按钮,达不到依次点击两个不同按钮的目的。下面根据两种常见场景给出解决方案:


场景1:页面上同时存在两个相同类名的按钮

如果页面加载完成后就有两个applyBtn btn btn-sm btn-red类的按钮,可以先获取所有匹配的元素,再按索引依次点击:

# 等待所有符合条件的按钮加载完成
all_apply_buttons = wait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//button[@class='applyBtn btn btn-sm btn-red']")))

# 点击第一个按钮
driver.execute_script("arguments[0].click();", all_apply_buttons[0])
# 点击第二个按钮
driver.execute_script("arguments[0].click();", all_apply_buttons[1])

注意:索引从0开始,确保页面上确实存在至少两个匹配的元素,否则会抛出索引越界错误。


场景2:点击第一个按钮后才出现第二个按钮

如果是点击第一个按钮后,页面才动态加载出第二个相同类名的按钮,那么需要分两次等待定位,每次点击后等待新的按钮出现:

# 点击第一个按钮(用element_to_be_clickable确保元素可点击)
clk_but1 = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='applyBtn btn btn-sm btn-red']")))
driver.execute_script("arguments[0].click();", clk_but1)

# 等待第一个按钮失效,确保页面状态更新(可选但推荐)
wait(driver, 10).until(EC.staleness_of(clk_but1))

# 定位并点击第二个按钮
clk_but2 = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='applyBtn btn btn-sm btn-red']")))
driver.execute_script("arguments[0].click();", clk_but2)

另外,你的XPATH写法里,@class = ('applyBtn btn btn-sm btn-red')的括号是多余的,可以简化成@class='applyBtn btn btn-sm btn-red',这样更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:51:22