Python中如何点击同class且特定value值的按钮?(值为continue|check-again)
问题排查与修复方案
先梳理下你原代码里存在的几个核心问题,再给出针对性的修复方案:
原代码的问题点
- Selenium API 已弃用:
find_elements_by_class_name是旧版Selenium的写法,在Selenium 4+版本中已经被标记为废弃,需要改用基于By类的标准定位方式 - 大小写与空格匹配漏洞:你需求是匹配
continue或check-again,但代码里找的是大写开头的Continue,如果实际按钮的value是小写/混合大小写,或者带有前后空格,都会导致匹配失败 - 字符串匹配逻辑冗余:用
find()判断子串存在的方式不够直观,且容易忽略空值场景 - 未处理异常情况:如果某个元素没有
value属性,get_attribute("value")会返回None,后续调用replace会直接抛出报错中断循环
修复后的代码实现
from selenium.webdriver.common.by import By # 使用新版Selenium定位API target_buttons = browser.find_elements(By.CLASS_NAME, "button-next") for button in target_buttons: try: # 获取按钮的value属性 raw_value = button.get_attribute("value") # 处理value为空/不存在的情况 if not raw_value: continue # 标准化处理:去除前后空格 + 转为小写,避免大小写/空格干扰 cleaned_value = raw_value.strip().lower() # 匹配目标值,符合条件则点击 if cleaned_value in ["continue", "check-again"]: button.click() # 如果你只需要点击第一个符合条件的按钮,添加下面这行退出循环 break except Exception as e: print(f"处理按钮时出现异常: {str(e)}") continue
关键修改说明
- API兼容:导入
By类并使用find_elements(By.CLASS_NAME, ...),适配新版Selenium的规范 - 空值防护:先判断
raw_value是否存在,避免后续字符串操作抛出异常 - 格式标准化:用
strip()去除前后空格(比replace(" ", "")更合理,不会误删中间合法空格),再转为小写,确保不管实际value是Continue、CONTINUE还是continue都能匹配成功 - 简洁匹配逻辑:直接用
in判断值是否在目标列表中,代码可读性更高 - 异常捕获:添加
try-except块,避免单个按钮处理失败导致整个循环终止 - 可选的终止逻辑:如果只需要点击第一个符合条件的按钮,保留
break即可;如果需要点击所有符合条件的按钮,删除break即可
内容的提问来源于stack exchange,提问作者Pruthvi Raj
相关产品推荐
相关产品推荐

