我似乎找不到任何关于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.process
是Popen
的实例)。浏览器关闭后为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()方法被调用。然后,您可以自动重新启动浏览器,并继续您的程序