You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

27 lines
1.2 KiB

from typing import Any, Optional
from .. import globals # pylint: disable=redefined-builtin
async def run_javascript(code: str, *,
respond: bool = True, timeout: float = 1.0, check_interval: float = 0.01) -> Optional[Any]:
"""Run JavaScript
This function runs arbitrary JavaScript code on a page that is executed in the browser.
The asynchronous function will return after the command(s) are executed.
The client must be connected before this function is called.
To access a client-side object by ID, use the JavaScript function `getElement()`.
:param code: JavaScript code to run
:param respond: whether to wait for a response (default: `True`)
:param timeout: timeout in seconds (default: `1.0`)
:param check_interval: interval in seconds to check for a response (default: `0.01`)
:return: response from the browser, or `None` if `respond` is `False`
"""
client = globals.get_client()
if not client.has_socket_connection:
raise RuntimeError(
'Cannot run JavaScript before client is connected; try "await client.connected()" or "client.on_connect(...)".')
return await client.run_javascript(code, respond=respond, timeout=timeout, check_interval=check_interval)