Executing javascript

You can easily execute JavaScript, in drivers which support it:


You can return the result of the script:

browser.evaluate_script("4+4") == 8

Example: manipulating text fields with JavaScript

Some text input actions cannot be “typed” thru browser.fill(), like new lines and tab characters. Below is en example how to work around this using browser.execute_script(). This is also much faster than browser.fill() as there is no simulated key typing delay, making it suitable for longer texts.

def fast_fill_by_javascript(browser: DriverAPI, elem_id: str, text: str):
    """Fill text field with copy-paste, not by typing key by key.

    Otherwise you cannot type enter or tab.

    :param id: CSS id of the textarea element to fill
    text = text.replace("\t", "\\t")
    text = text.replace("\n", "\\n")

    # Construct a JavaScript snippet that is executed on the browser sdie
    snippet = f"""document.querySelector("#{elem_id}").value = "{text}";"""