【问题标题】:How to start playwright outside 'with' without context managers如何在没有上下文管理器的情况下在 \'with\' 之外开始编剧
【发布时间】:2022-11-22 03:10:39
【问题描述】:

我正在创建一个 Web 自动化,我需要让浏览器保持打开状态,但由于 playwright 库只有在每次脚本完成时开始显示包括“with”语句的代码,浏览器才会自行关闭。 我知道我可以用时间 (100) 快速解决这个问题,但这似乎不是最佳做法。我试图在没有 with 语句的情况下创建类似的操作,但它一直关闭浏览器。 如何解决此问题并保持浏览器打开?

请在下面查看我的代码:

from playwright.sync_api import sync_playwright

p = sync_playwright().start()
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto('https://www.google.com/')
p.stop()

【问题讨论】:

标签: python playwright playwright-python


【解决方案1】:

如果您不想使用上下文管理器,那么您可以使用 .start() 方法启动浏览器而不使用上下文管理器:

from playwright.sync_api import sync_playwright

p = sync_playwright().start()
browser = p.chromium.launch(headless=False)
page = browser.new_page()
p.stop()

完成后记得使用.stop()方法。

【讨论】:

  • 嘿,谢谢你的回答,但浏览器一直关闭窗口。试图删除 p.stop() 行,但没有用。我需要保持浏览器打开:/
  • @pythonnoobie 用你尝试做的事情更新你的问题
  • @pythonnoobie 确保只在做任何你需要做的事情之后才调用p.stop(),或者如果你想无限期地让浏览器打开,则完全跳过调用。
【解决方案2】:

剧作家有自己的等待。我的代码是异步的,但 playwright API 与同步代码类似。

async def main():
    apw = await async_playwright().start()
    browser: Browser = await apw.firefox.launch(headless=False)
    page = await browser.new_page()
    await page.goto('https://avito.ru')
    await page.wait_for_timeout(10000)
    apw.stop()

asyncio.get_event_loop().run_until_complete(main()) 

【讨论】:

    猜你喜欢
    • 2023-01-18
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多