diff --git a/pyppeteer/connection.py b/pyppeteer/connection.py index 8a0527e7..284708c7 100644 --- a/pyppeteer/connection.py +++ b/pyppeteer/connection.py @@ -41,7 +41,7 @@ def __init__(self, url: str, loop: asyncio.AbstractEventLoop, self.connection: CDPSession self._connected = False self._ws = websockets.client.connect( - self._url, max_size=None, loop=self._loop) + self._url, max_size=None, loop=self._loop, ping_interval=None, ping_timeout=None) self._recv_fut = self._loop.create_task(self._recv_loop()) self._closeCallback: Optional[Callable[[], None]] = None diff --git a/pyppeteer/page.py b/pyppeteer/page.py index 5a293f4c..b4e498ad 100644 --- a/pyppeteer/page.py +++ b/pyppeteer/page.py @@ -22,6 +22,7 @@ from pyppeteer.element_handle import ElementHandle from pyppeteer.emulation_manager import EmulationManager from pyppeteer.errors import PageError +from pyppeteer.errors import TimeoutError as pyTimeoutError from pyppeteer.execution_context import JSHandle # noqa: F401 from pyppeteer.frame_manager import Frame # noqa: F401 from pyppeteer.frame_manager import FrameManager @@ -491,7 +492,7 @@ async def cookies(self, *urls: str) -> dict: * ``sameSite`` (str): ``'Strict'`` or ``'Lax'`` """ if not urls: - urls = (self.url, ) + urls = (self.url,) resp = await self._client.send('Network.getCookies', { 'urls': urls, }) @@ -846,7 +847,7 @@ async def goto(self, url: str, options: dict = None, **kwargs: Any * then main resource failed to load .. note:: - :meth:`goto` either raise error or return a main resource response. + :meth:`goto` return a main resource response. The only exceptions are navigation to ``about:blank`` or navigation to the same URL with a different hash, which would succeed and return ``None``. @@ -877,14 +878,15 @@ def set_request(req: Request) -> None: options) result = await self._navigate(url, referrer) - if result is not None: + if not result is None: raise PageError(result) result = await watcher.navigationPromise() watcher.cancel() helper.removeEventListeners(eventListeners) error = result[0].pop().exception() # type: ignore if error: - raise error + if not isinstance(error, pyTimeoutError): + raise error request = requests.get(mainFrame._navigationURL) return request.response if request else None @@ -894,6 +896,8 @@ async def _navigate(self, url: str, referrer: str) -> Optional[str]: 'Page.navigate', {'url': url, 'referrer': referrer}) if response.get('errorText'): return f'{response["errorText"]} at {url}' + if response.get('error_text'): + return f'{response["error_text"]} at {url}' return None async def reload(self, options: dict = None, **kwargs: Any @@ -1732,7 +1736,6 @@ def waitForFunction(self, pageFunction: str, options: dict = None, 'JSHeapTotalSize', ) - unitToPixels = { 'px': 1, 'in': 96,