(
self,
browser_id: int | str | None,
ref: int | str,
path: str = "",
paths: list[str] | None = None,
)
| 1978 | return {"action": action or {}, "state": await self._state(resolved_id)} |
| 1979 | |
| 1980 | async def upload_file( |
| 1981 | self, |
| 1982 | browser_id: int | str | None, |
| 1983 | ref: int | str, |
| 1984 | path: str = "", |
| 1985 | paths: list[str] | None = None, |
| 1986 | ) -> dict[str, Any]: |
| 1987 | upload_paths = self._normalize_upload_paths(path=path, paths=paths) |
| 1988 | await self.ensure_started() |
| 1989 | resolved_id = self._resolve_browser_id(browser_id) |
| 1990 | page = self._page(resolved_id) |
| 1991 | await self._ensure_content_helper(page) |
| 1992 | metadata = await page.evaluate( |
| 1993 | "(ref) => globalThis.__spaceBrowserPageContent__.fileInputFor(ref)", |
| 1994 | ref, |
| 1995 | ) |
| 1996 | handle = None |
| 1997 | try: |
| 1998 | handle = await page.evaluate_handle( |
| 1999 | "(ref) => globalThis.__spaceBrowserPageContent__.fileInputElementFor(ref)", |
| 2000 | ref, |
| 2001 | ) |
| 2002 | element = handle.as_element() if handle else None |
| 2003 | if element: |
| 2004 | await element.set_input_files(upload_paths) |
| 2005 | elif metadata and metadata.get("selector"): |
| 2006 | await page.set_input_files(metadata["selector"], upload_paths) |
| 2007 | else: |
| 2008 | raise ValueError(f"Browser ref {ref!r} does not resolve to a file input") |
| 2009 | finally: |
| 2010 | if handle: |
| 2011 | with contextlib.suppress(Exception): |
| 2012 | await handle.dispose() |
| 2013 | await self._settle(page, short=True) |
| 2014 | self._maybe_promote(resolved_id) |
| 2015 | return { |
| 2016 | "action": { |
| 2017 | "files": upload_paths, |
| 2018 | "input": metadata or {}, |
| 2019 | "ref": ref, |
| 2020 | }, |
| 2021 | "state": await self._state(resolved_id), |
| 2022 | } |
| 2023 | |
| 2024 | async def mouse( |
| 2025 | self, |
no test coverage detected