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

Selenium中按钮无法点击求助:页面弹出即退出,存在同名同class按钮

Selenium点击按钮失效+页面闪退问题修复

核心问题&解决思路

  1. 页面未加载完成就点击:直接用find_element会在元素未渲染时报错或点击无效,必须等元素可交互
  2. 重复按钮定位错误:原XPath的空格匹配可能不准确,且没区分两个相同按钮
  3. 脚本执行完直接关浏览器:函数执行完毕后没有阻塞,浏览器直接退出

修复后的完整代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager

chromeOptions = Options()
chromeOptions.headless = False
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chromeOptions)

def init_browser():
    driver.get("https://www.standardsmap.org/en/home")
    print('starting_Driver')
    
    # 用显式等待确保按钮可点击,同时用normalize-space处理文本空格
    # 如果要区分两个按钮,加索引比如(//button[normalize-space(text())='Explore Standards Map'])[1]
    click_butt = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[normalize-space(text())='Explore Standards Map']"))
    )
    click_butt.click()
    
    # 阻塞脚本,避免浏览器立即退出,按回车再关闭
    input("Press Enter to close the browser...")
    driver.quit()

init_browser()

关键细节说明

  • 显式等待:WebDriverWait最多等10秒,直到按钮满足可点击条件,比强制sleep更高效
  • XPath优化:normalize-space去掉文本前后的空格,避免原XPath里的空格匹配偏差;如果两个按钮位置不同,用[1]或[2]索引指定目标按钮
  • 防止闪退:input()让脚本暂停,直到用户输入回车,避免浏览器随脚本结束直接关闭

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:10:27