(
self,
browser_id: int | str | None,
event_type: str,
x: float,
y: float,
button: str = "left",
modifiers: list[str] | str | None = None,
)
| 2022 | } |
| 2023 | |
| 2024 | async def mouse( |
| 2025 | self, |
| 2026 | browser_id: int | str | None, |
| 2027 | event_type: str, |
| 2028 | x: float, |
| 2029 | y: float, |
| 2030 | button: str = "left", |
| 2031 | modifiers: list[str] | str | None = None, |
| 2032 | ) -> dict[str, Any]: |
| 2033 | event_type_lower = str(event_type or "click").lower() |
| 2034 | modifiers = self._normalize_modifiers(modifiers) |
| 2035 | if modifiers: |
| 2036 | if event_type_lower != "click": |
| 2037 | raise ValueError("modifiers are only valid for event_type='click'") |
| 2038 | await self.ensure_started() |
| 2039 | resolved_id = self._resolve_browser_id(browser_id) |
| 2040 | page = self._page(resolved_id) |
| 2041 | if event_type_lower == "move": |
| 2042 | await page.mouse.move(float(x), float(y)) |
| 2043 | elif event_type_lower == "down": |
| 2044 | await page.mouse.down(button=button) |
| 2045 | elif event_type_lower == "up": |
| 2046 | await page.mouse.up(button=button) |
| 2047 | else: |
| 2048 | pressed: list[str] = [] |
| 2049 | try: |
| 2050 | if modifiers: |
| 2051 | for mod in modifiers: |
| 2052 | await page.keyboard.down(mod) |
| 2053 | pressed.append(mod) |
| 2054 | await page.mouse.click(float(x), float(y), button=button) |
| 2055 | finally: |
| 2056 | for mod in reversed(pressed): |
| 2057 | with contextlib.suppress(Exception): |
| 2058 | await page.keyboard.up(mod) |
| 2059 | await self._settle(page, short=True) |
| 2060 | self._maybe_promote(resolved_id) |
| 2061 | return await self._state(resolved_id) |
| 2062 | |
| 2063 | async def wheel( |
| 2064 | self, |
no test coverage detected