Py学习  »  Python

python:在pyppeter中保持打开的浏览器并创建cdpsession

HTF • 4 年前 • 1008 次点击  

我有两个问题现在我解决不了。

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.
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38267
 
1008 次点击  
文章 [ 1 ]  |  最新文章 4 年前