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

DrissionPage调用page.quit()关闭浏览器报错的解决方法

问题:DrissionPage调用page.quit()时出现JSONDecodeError报错,无法正常关闭浏览器

我因DrissionPage的反检测能力从Selenium/SeleniumBase转用该框架,其他操作都正常,但在关闭浏览器环节遇到问题。按官方文档说明使用page.quit()关闭浏览器时,本地运行出现如下报错:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\threading.py", line 973, in _bootstrap_inner
    self.run()
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\site-packages\DrissionPage\chromium_driver.py", line 123, in _recv_loop
    message = loads(message_json)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\PC\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

最简示例代码:

from DrissionPage import ChromiumPage
from time import sleep

page = ChromiumPage()
page.get('https://www.google.com/')

sleep(5)
page.quit()

环境配置:

{
    "OS": "Windows 10 64 Bit",
    "OS_Version": "10.0 Build (10240)",
    "Browser": "Google Chrome",
    "Browser Version": "120.0.6099.130 (Official Build) (64-bit)"
}

解决方案

1. 升级DrissionPage到最新版本

该报错属于框架内部线程通信的已知bug,新版本通常会修复此类问题。执行以下命令升级:

pip install --upgrade DrissionPage

2. 捕获异常忽略报错

如果升级后仍出现该问题,可在调用quit()时捕获JSONDecodeError,不影响浏览器正常关闭:

from DrissionPage import ChromiumPage
from time import sleep
import json

page = ChromiumPage()
page.get('https://www.google.com/')

sleep(5)
try:
    page.quit()
except json.decoder.JSONDecodeError:
    pass

3. 使用替代关闭方式

如果上述方法无效,可尝试以下两种替代方案:

  • 直接终止浏览器进程(Windows环境适用):强制关闭所有Chrome进程,彻底结束会话:
    import os
    os.system("taskkill /f /im chrome.exe")
    
  • 先关闭页面再退出:先调用close()关闭当前标签页,再执行quit(),部分场景可规避线程通信问题:
    page.close()
    page.quit()
    

4. 指定调试端口初始化页面

尝试在初始化ChromiumPage时手动指定调试端口,避免框架自动分配端口时的通信异常:

page = ChromiumPage(port=9222)

内容的提问来源于stack exchange,提问作者S M Shahriar Zarir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:59