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

Python脚本CMD启动ChromeDriver后停止执行,按键无响应求助

解决脚本在命令行/双击运行时按键无响应的问题

嘿,我来帮你搞定这个问题!你遇到的情况其实和ChromeDriver占用CMD窗口关系不大,核心原因是脚本在命令行或双击运行时,主线程执行完代码后就直接退出了——而IDLE是交互式环境,会自动保持主线程处于活跃状态,所以键盘监听能正常工作。

当你运行到keyboard.on_press(keyboardHandler)这一行时,键盘库确实注册了监听,但如果主线程没有被阻塞住,程序会立刻结束,监听线程也会跟着终止,自然就没法响应按键了。

修复方案:给主线程加个阻塞逻辑

只需要在代码末尾添加一段让主线程保持运行的代码就行,推荐两种简单的方式:

方式1:等待特定按键退出(比如ESC键)

在代码最后加上一行阻塞逻辑,同时记得退出时关闭浏览器,避免进程残留:

# 保持主线程运行,直到按下ESC键退出
keyboard.wait('esc')
# 退出前关闭浏览器
driver.quit()

修改后的完整代码:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import Select
import keyboard
from tkinter import *
from tkinter import messagebox

address = {}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
chrome_options.add_argument("--disable-extensions")
chromeDriverPath = 'C:/ChromeDriver/chromedriver.exe'

def keyboardHandler(keyboardEvent):
    if keyboardEvent.name == "f7":
        copyAddress(driver)
    elif keyboardEvent.name == "f9":
        paste(driver)

# Script will launch browser when f7 is pressed
keyboard.wait('f7')
driver = webdriver.Chrome(chromeDriverPath, options=chrome_options)
driver.get('http://www.ebay.co.uk/')
keyboard.on_press(keyboardHandler)

# 新增:阻塞主线程,直到按下ESC键
keyboard.wait('esc')
# 退出前关闭浏览器
driver.quit()

方式2:用循环保持运行(带异常处理)

如果不想用特定按键退出,也可以用无限循环,同时处理Ctrl+C的中断信号:

import time
try:
    while True:
        time.sleep(1)  # 避免占用过多CPU资源
except KeyboardInterrupt:
    # 按下Ctrl+C时退出,同时关闭浏览器
    driver.quit()

额外提示

  • 别忘了补充实现copyAddress和paste函数,不然按F7/F9会触发报错哦。
  • 如果你担心ChromeDriver的控制台窗口干扰,可以给ChromeOptions添加--headless=new参数,让浏览器在无头模式运行(不显示窗口)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:02:41