playwright-python - 如何在使用 playwright-python 运行的代码结束时保持浏览器打开?
问题描述
我想使用 playwright-python 自动填写一些表格。然后在提交前仔细检查填写。但它总是在代码运行结束时关闭浏览器。即使我使用了handleSIGHUP=False, handleSIGINT=False, handleSIGTERM=False
启动参数,并且没有在我的代码中使用任何page.close()
或browser.close()
,它仍然会在代码完成后关闭浏览器。
有谁知道该怎么做?
解决方案
浏览器是由 python 脚本启动的,所以它会在脚本结束时结束。
所以你需要保持脚本活着。
对于异步部分,它有点棘手。我假设你有同样的
asyncio.get_event_loop().run_until_complete(main()
:)
所以在异步主程序中你需要保持异步循环运行:
例如等待键盘:
import asyncio
from playwright.async_api import async_playwright
from playwright.async_api import Page
async with async_playwright() as p:
async def main(run_forever: bool):
browser = await p.__getattribute__(C.BROWSER.browser).launch(headless=False, timeout=10000)
page = await browser.new_page()
if run_forever:
print('Press CTRL-D to stop')
reader = asyncio.StreamReader()
pipe = sys.stdin
loop = asyncio.get_event_loop()
await loop.connect_read_pipe(lambda: asyncio.StreamReaderProtocol(reader), pipe)
async for line in reader:
print(f'Got: {line.decode()!r}')
else:
browser.close()
推荐阅读
- html - 带有图像的 div 未显示在 d-flex flex-column 中
- firebase - 如何在 Flamelink 和 React Native 中将内容分配给特定的登录用户?
- assembly - msdos源码github中bios、bootloader和内核文件在哪里
- django - 一个外键子模型Model里面的多种动态形式
- node.js - 反应节点csv postgres
- python - 在 Python 中使用 turtle.screen.onkey() 运行多个函数
- c++ - Linux下捕捉SIGKILL的C++程序
- python - 尝试使用 .at[] 将字符串值分配给 pandas 数据框时出错
- java - 为什么我的方法没有为这种类型定义?
- php - 如何按特定顺序数组键对关联数组进行排序?