【问题标题】:Python-Playwright: Is there a way to introspect and/or run commands interactively?Python-Playwright:有没有办法以交互方式反省和/或运行命令?
【发布时间】:2022-11-22 03:09:57
【问题描述】:

我正在尝试从 Selenium 转移到 Playwright 以完成一些网络抓取任务。

也许我养成了让 Selenium 一边运行浏览器一边测试运行中的命令和选择器的坏习惯。

有什么方法可以使用 Playwright 实现类似的效果吗?

到目前为止,我所取得的成就是在控制台上运行 playwright,类似于:

from playwright.sync_api import sync_playwright
with sync_playwright() as pw:
    browser = pw.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto('https://google.com')
    page.pause()

我得到一个浏览器窗口和一个 Playwright Inspector - 从那里我的命令或变量都不会执行。

【问题讨论】:

  • 此代码应在交互模式下工作。只需将超时设置为 0。或者。如果您真的需要脚本并且不需要安全性,while True: eval(input(">>> "))
  • 我在 PyCharm 上使用 Python 控制台,在 page.pause() 之后没有命令生效。如果我将命令添加到块中说:page.get_by_role("button", name="Reject all").click() 它将在重新启动浏览器后工作
  • 是的,它有点管用。不幸的是我不能将结果分配给任何变量,或者如果我得到异常它只会关闭事件循环。
  • page.pause() 之后,您是否尝试从浏览器开发工具控制台调用playwright.resume()

标签: playwright-python


【解决方案1】:

我会在交互式 repl 上使用 can i run playwright outside of 'with'?How to start playwright outside 'with' without context managers 中的技术:

PS C:UsersooDesktop> py
Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 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.example.com")
<Response url='https://www.example.com/' request=<Request url='https://www.example.com/' method='GET'>>
>>> page.title()
'Example Domain'
>>> page.close()
>>> browser.close()
>>> p.stop()

如果您使用 page.pause(),请尝试在浏览器开发工具控制台中运行 playwright.resume() 以恢复 Python repl。

如果您真的需要从脚本而不是 Python repl 执行此操作,您可以使用 code interpreterroll your own,但我会尽可能避免这种情况。

【讨论】:

    猜你喜欢
    • 2022-08-22
    • 1970-01-01
    • 2021-08-01
    • 2011-11-08
    • 2011-12-05
    • 1970-01-01
    • 2012-07-12
    • 2021-06-26
    • 2021-03-18
    相关资源
    最近更新 更多