Open
Description
System info
- Playwright Version: [v1.40]
- Operating System: [ macOS 14.2.1]
- Browser: Chromium
- Other info:
Source code
from playwright.async_api import async_playwright
import asyncio
async def doit(url):
print(f"Processing {url}")
try:
async with async_playwright() as p:
browser_type = p.chromium
browser = await browser_type.launch(
headless=True,
)
page = await browser.new_page(
bypass_csp=True,
ignore_https_errors=True,
)
res = await page.goto(url, wait_until="load", timeout=30 * 1000)
await page.wait_for_load_state(state="networkidle")
await browser.close()
except Exception as e:
print(f"Got exception {e}")
raise e
asyncio.run(doit("https://www.streetinsider.com/Press+Releases/Radius+Recycling+Reports+First+Quarter+Fiscal+2024+Financial+Results/22593061.html"))
Steps
- Save the code above and run it. I'm using python 3.10.7
Expected
It should complete without error.
Actual
- It throws an InvalidStateError -- if it works, just run it a couple more times. It nearly always fails for me.
Processing https://www.streetinsider.com/Press+Releases/Radius+Recycling+Reports+First+Quarter+Fiscal+2024+Financial+Results/22593061.html
Got exception invalid state
Traceback (most recent call last):
File "/Users/philip/play-dir/playtest.py", line 22, in doit
await page.wait_for_load_state(state="networkidle")
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/async_api/_generated.py", line 9367, in wait_for_load_state
await self._impl_obj.wait_for_load_state(state=state, timeout=timeout)
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/_impl/_page.py", line 491, in wait_for_load_state
return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/_impl/_frame.py", line 237, in wait_for_load_state
return await self._wait_for_load_state_impl(state, timeout)
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/_impl/_frame.py", line 265, in _wait_for_load_state_impl
await waiter.result()
playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/philip/play-dir/playtest.py", line 29, in <module>
asyncio.run(doit("https://www.streetinsider.com/Press+Releases/Radius+Recycling+Reports+First+Quarter+Fiscal+2024+Financial+Results/22593061.html"))
File "/Users/philip/.pyenv/versions/3.10.7/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/Users/philip/.pyenv/versions/3.10.7/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "/Users/philip/play-dir/playtest.py", line 27, in doit
raise e
File "/Users/philip/play-dir/playtest.py", line 7, in doit
async with async_playwright() as p:
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/async_api/_context_manager.py", line 58, in __aexit__
await self._connection.stop_async()
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 288, in stop_async
self.cleanup()
File "/Users/philip/.pyenv/versions/play-dir/lib/python3.10/site-packages/playwright/_impl/_connection.py", line 299, in cleanup
callback.future.set_exception(self._closed_error)
asyncio.exceptions.InvalidStateError: invalid state