【发布时间】:2021-03-19 21:33:50
【问题描述】:
我在 python 中使用 playwright 来取消网页上的文本提交:
page.once("dialog", lambda dialog: asyncio.create_task(dialog.accept()))
with page.expect_navigation():
page.click("text=\"Cancel\"")
但是这会引发:
Exception in callback SyncBase._sync.<locals>.callback(<Task finishe...> result=None>) at /home/.../venv/lib/python3.8/site-packages/playwright/sync_base.py:100
handle: <Handle SyncBase._sync.<locals>.callback(<Task finishe...> result=None>) at /home/.../venv/lib/python3.8/site-packages/playwright/sync_base.py:100>
Traceback (most recent call last):
File "/usr/lib/python3.8/asyncio/events.py", line 81, in _run
self._context.run(self._callback, *self._args)
...
TypeError: a coroutine was expected, got None
代码工作正常,取消得到正确确认 - 但是很高兴知道我在这里做错了什么以及如何解决它。
【问题讨论】:
-
疯狂猜测,但也许应该只是
lambda dialog: dialog.accept()(没有asyncio.create_task())?我找不到page.once()的 Python 版本的任何文档,所以很难确定。 -
就是这样。好眼力。我必须同意文件。 python版本似乎不存在。如果您将解决方案作为答案提交,我会将其标记为正确。也许我们可以完全摆脱 lambda? (因为我们正在使用“lambda 对话框:dialog.accept()”)
标签: python playwright