引入xlwings读取Excel代码后Selenium驱动的Chrome自动关闭问题
问题原因
这个Chrome自动关闭问题不是xlwings的功能bug,是两个运行逻辑共同导致的:
- 未引入xlwings时,脚本执行完毕后Python没有触发完整的子进程回收,残留的chromedriver进程会托着Chrome窗口保持打开,这本身属于非预期的残留状态,不是Selenium的默认正常行为。
- 引入xlwings后,调用
xw.Book()加载Excel文件时会初始化Windows COM运行环境,脚本跑完所有代码行后会触发标准的全量子进程清理流程:Selenium拉起的chromedriver进程被正常回收,绑定的Chrome窗口自然会同步关闭。
修复方案
显式配置Chrome启动参数,开启detach分离模式,让Chrome窗口在driver进程退出后依然保留,具体修改如下:
- 导入ChromeOptions配置类
- 初始化driver前添加detach实验性配置
- 将配置传入Chrome初始化方法
修改后的driver初始化代码段:
from selenium.webdriver.chrome.options import Options # 其余原有导入保持不变 # 原有Excel读取、账号密码定义代码保持不变 Path = "c:/chromedriver.exe" # 新增detach配置 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 传入配置初始化driver driver = webdriver.Chrome(Path, options=chrome_options) # 后续原有登录、跳转逻辑保持不变
额外注意点
- 当前
alertNumber = wb.app.selection取到的是xlwings的Range对象,并非单元格内的实际值,传入输入框时需要取.value属性,改为alertNumber = wb.app.selection.value,否则会触发参数类型报错。 - 脚本执行结束后如果不需要保留后台Excel进程,可在代码末尾添加
wb.app.quit()清理残留进程,避免无效占用内存。
内容的提问来源于stack exchange,提问作者lakpura.manul
相关产品推荐
相关产品推荐

