如何检查Pyppeteer浏览器是否已关闭?



我似乎找不到任何关于Python版本的信息如何检查我的浏览器是否已正常关闭,以下browser.close().

我对JavaScript的知识有限,所以不能正确地遵循答案:如何检查浏览器是否仍然打开并工作。

printing((browser.on('disconnected'))似乎返回一个函数对象,当调用它时需要一个叫做f的东西。

检查浏览器是否正确关闭的正确方法是什么?

from pyppeteer import launch 
async def get_browser():
return await launch({"headless": False})
async def get_page():
browser = await get_browser()
url = 'https://www.wikipedia.org/'
page = await browser.newPage()
await page.goto(url)
content = await page.content()
await browser.close()
print(browser.on('disconnected'))
#assert browser is None
#assert print(html)

loop = asyncio.get_event_loop()
result  = loop.run_until_complete(get_page())
print(result)

.on方法注册一个在特定事件上触发的回调。例如:

import asyncio
from pyppeteer import launch 

async def get_page():
browser = await launch({"headless": True})
browser.on("disconnected", lambda: print("disconnected"))
url = "https://www.wikipedia.org/"
page, = await browser.pages()
await page.goto(url)
content = await page.content()
print("disconnecting...")
await browser.disconnect()
await browser.close()
return content

if __name__ == "__main__":
result = asyncio.run(get_page())
print(result)

输出:

disconnecting...
disconnected
<page content>

从回调中,你可以翻转一个标志来表示关闭,或者(更好的是)直接执行任何你想要执行的操作。

还有browser.process.returncode(browser.processPopen的实例)。浏览器关闭后为1,但断开连接后不为1。

下面是上面的一个例子:

import asyncio
from pyppeteer import launch 

async def get_page():
browser = await launch({"headless": True})
connected = True
async def handle_disconnected():
nonlocal connected
connected = False
browser.on(
"disconnected",
lambda: asyncio.ensure_future(handle_disconnected())
)
print("connected?", connected)
print("return code?", browser.process.returncode)
print("disconnecting...")
await browser.disconnect()
print("connected?", connected)
print("return code?", browser.process.returncode)
print("closing...")
await browser.close()
print("return code?", browser.process.returncode)

if __name__ == "__main__":
asyncio.run(get_page())

输出:

connected? True
return code? None
disconnecting...
connected? False
return code? None
closing...
return code? 1

您可以使用浏览器。On ('disconnected')监听浏览器何时关闭或崩溃,或者浏览器是否已断开连接。Disconnect()方法被调用。然后,您可以自动重新启动浏览器,并继续您的程序

最新更新