【问题标题】:How to keep browser opening by the end of the code running with playwright-python?如何在使用 playwright-python 运行的代码结束时保持浏览器打开?
【发布时间】:2021-04-24 09:54:21
【问题描述】:

我想使用 playwright-python 自动填写一些表格。然后在提交前仔细检查填写。但它总是在代码运行结束时关闭浏览器。即使我使用了handleSIGHUP=False, handleSIGINT=False, handleSIGTERM=False 启动参数,并且在我的代码中没有使用任何page.close()browser.close(),它仍然会在代码完成后关闭浏览器。

有人知道怎么做吗?

【问题讨论】:

    标签: playwright-python


    【解决方案1】:

    浏览器是由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()
    

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 2019-04-12
      • 2022-01-26
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      相关资源
      最近更新 更多