Hi,
I believe that the current python3-playwright is not usable because the
node-playwright version is too old.
Running a simple test
$ cat test.py
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://example.com")
print(page.title())
browser.close()
results in
$ python3 test.py
Traceback (most recent call last):
File "/build/test.py", line 3, in <module>
with sync_playwright() as p:
~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/playwright/sync_api/_context_manager.py", line 77, in __enter__
dispatcher_fiber.switch()
~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/playwright/sync_api/_context_manager.py", line 56, in greenlet_main
self._loop.run_until_complete(self._connection.run_as_sync())
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
return future.result()
~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/playwright/_impl/_connection.py", line 301, in run_as_sync
await self.run()
File "/usr/lib/python3/dist-packages/playwright/_impl/_connection.py", line 312, in run
await self._transport.run()
File "/usr/lib/python3/dist-packages/playwright/_impl/_transport.py", line 161, in run
self.on_message(obj)
~~~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/playwright/_impl/_connection.py", line 271, in <lambda>
self._transport.on_message = lambda msg: self.dispatch(msg)
~~~~~~~~~~~~~^^^^^
File "/usr/lib/python3/dist-packages/playwright/_impl/_connection.py", line 437, in dispatch
self._create_remote_object(
~~~~~~~~~~~~~~~~~~~~~~~~~~^
parent, params["type"], params["guid"], params["initializer"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3/dist-packages/playwright/_impl/_connection.py", line 503, in _create_remote_object
result = self._object_factory(parent, type, guid, initializer)
File "/usr/lib/python3/dist-packages/playwright/_impl/_object_factory.py", line 76, in create_remote_object
local_utils = LocalUtils(parent, type, guid, initializer)
File "/usr/lib/python3/dist-packages/playwright/_impl/_local_utils.py", line 30, in __init__
for device in initializer["deviceDescriptors"]
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
KeyError: 'deviceDescriptors'
Task was destroyed but it is pending!
task: <Task pending name='Task-3' coro=<Connection.run.<locals>.init() running at /usr/lib/python3/dist-packages/playwright/_impl/_connection.py:308> wait_for=<Future pending cb=[Task.task_wakeup()]> cb=[ProtocolCallback.__init__.<locals>.cb() at /usr/lib/python3/dist-packages/playwright/_impl/_connection.py:228]>
which upstream says is associated to a version mismatch
https://github.com/microsoft/playwright-python/issues/2130
Unfortunately the node package is very out of date, see Bug #1121651, but I have
no experience with javascript packaging to be able to help.
See also Bug #1121984.