在使用pyppeteer控制 Chromium 期间,我大约在工作 20 秒后收到错误消息:
pyppeteer.errors.NetworkError: Protocol Error (Runtime.callFunctionOn): Session closed. Most likely the page has been closed.
如此处所述,该问题可能是由 pythonwebsockets>=7
包的实现及其在 pyppeteer 中的使用引起的。
有 3 种解决方案可以防止与 Chromium 断开连接:
- 像这里描述的那样修补代码(首选):
在运行任何其他 Pyppeteer 命令之前运行代码段
def patch_pyppeteer():
import pyppeteer.connection
original_method = pyppeteer.connection.websockets.client.connect
def new_method(*args, **kwargs):
kwargs['ping_interval'] = None
kwargs['ping_timeout'] = None
return original_method(*args, **kwargs)
pyppeteer.connection.websockets.client.connect = new_method
patch_pyppeteer()
- 更改制造麻烦的库:将包
降级为例如通过
(在您的虚拟环境中)websockets
websockets-6.0
pip3 install websockets==6.0 --force-reinstall
- 按照此拉取请求 中的描述更改代码库,希望很快合并。