From 5f94bd17681faab52ff3e4848ac590c5621a12a7 Mon Sep 17 00:00:00 2001 From: jay817 Date: Mon, 25 Nov 2024 15:17:29 -0500 Subject: [PATCH] Update playwright/README.md --- playwright/README.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/playwright/README.md b/playwright/README.md index b82c889..8b80471 100644 --- a/playwright/README.md +++ b/playwright/README.md @@ -1,24 +1,34 @@ ```python """ -WSL Debian +Linux (WSL Debian) -pip install playwright nest_asyncio +pip install playwright playwright install --with-deps """ # %% -import asyncio; __import__('nest_asyncio').apply() -@(sync := lambda coro: __import__('functools').wraps(coro)( +import asyncio, functools +def _run_once(loop): + loop._process_events(loop._selector.select(0)) + if (ready := loop._ready) and (handle := ready.popleft())._cancelled is False: + task = (tasks := asyncio.tasks._current_tasks).pop(loop, None) + handle._run(); tasks[loop] = task +(loop := asyncio.get_event_loop()).__class__._run_once = _run_once +asyncio.run = loop.run_until_complete; loop.__class__._check_running = lambda _: 0 + +@(sync := lambda coro: functools.wraps(coro)( lambda *args, **kwargs: asyncio.run(coro(*args, **kwargs)))) -async def Page(): +async def Page(headless=True): from playwright.async_api import async_playwright - browser = await (await async_playwright().start()).firefox.launch() + browser = await (await async_playwright().start()).firefox.launch(headless=headless) (page := await browser.new_page()).set_default_timeout(0) for attr in dir(page): if asyncio.iscoroutinefunction(method := getattr(page, attr)): setattr(page, attr, sync(method)) - from IPython.display import Image - page.goto = lambda url, goto=page.goto: goto(url) and Image(page.screenshot()) - return page -(page := Page()).goto('https://naver.com') -print(page.title()) # NAVER + try: + from IPython.display import Image + page.goto = lambda url, goto=page.goto: goto(url) and Image(page.screenshot()) + finally: + return page +(page := Page()).goto('https://example.org') +print(page.title()) # Example Domain ``` \ No newline at end of file