猿问

Python:在 pyppeteer 中保持打开浏览器并创建 CDPSession

我有两个问题暂时无法解决。


1.我想让浏览器保持运行,这样我就可以使用pyppeteer.launcher.connect()函数重新连接,但即使我不调用它,它似乎也被关闭了pyppeteer.browser.Browser.close()。


测试01.py:


import asyncio


from pyppeteer import launch, connect


async def fetch():

    browser = await launch(

        headless=False,

        args=['--no-sandbox']

    )

    print(f'Endpoint: {browser.wsEndpoint}')

    await browser.disconnect()


loop = asyncio.get_event_loop()

loop.run_until_complete(fetch())


$ python test01.py

Endpoint: ws://127.0.0.1:51757/devtools/browser/00e917a9-c031-499a-a8ee-ca4090ebd3fe

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" http://127.0.0.1:51757

curl: (7) Failed to connect to 127.0.0.1 port 51757: Connection refused

2.如何创建 CDP 会话。此代码应该打开另一个浏览器窗口,但它没有按预期工作:


测试02.py


import asyncio

import time


from pyppeteer import launch, connect


async def fetch():

    browser = await launch(

        headless=False,

        args=['--no-sandbox']

    )

    page = await browser.newPage()

    cdp = await page.target.createCDPSession()

    await cdp.send('Target.createBrowserContext')

    time.sleep(5)

    await browser.disconnect()


loop = asyncio.get_event_loop()

loop.run_until_complete(fetch())


$ python test02.py

Future exception was never retrieved

future: <Future finished exception=NetworkError('Protocol error Target.sendMessageToTarget: Target closed.',)>

pyppeteer.errors.NetworkError: Protocol error Target.sendMessageToTarget: Target closed.


慕容708150
浏览 719回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答