def inject(driver: WebDriver, version='3.5.1', timeout=10): """ Inject the given jQuery version to the current context and any iframes within it. Args: driver: The instance of WebDriver to attach to. version: The jQuery version. (Default is 3.5.1) timeout: The max number of seconds to wait for jQuery to be loaded. (Default is 10) """ jquery_url = f'https://code.jquery.com/jquery-{version}.min.js' load_jquery = utils.read_script_from_file('load_jquery.js') driver.execute_async_script(load_jquery, jquery_url, None) WebDriverWait(driver, timeout).until( lambda drvr: drvr.execute_script( 'return typeof(jQuery) !== "undefined";'), message= 'jQuery was "undefined" which means it did not load within timeout.') iframes = driver.find_elements_by_tag_name('iframe') for iframe in iframes: driver.execute_async_script(load_jquery, jquery_url, iframe)
def f(driver: WebDriver, *args: Any) -> JsonLike: try: r = driver.execute_async_script( script, *args) if is_async else driver.execute_script( script, *args) return result_mappers[name](r) except StaleElementReferenceException as e: raise e except Exception as e: raise ScriptError(name, list(args), e)
def await_all_ready(driver: WebDriver) -> None: script = """ const [done] = [...arguments]; (async function() { const views = [...Object.values(Bokeh.index)] if (views.length == 0) done(false) else { await Promise.all(views.map((view) => view.ready)) done(true) } })() """ if not driver.execute_async_script(script): raise RuntimeError("could not find any root views")
def await_ready(driver: WebDriver, root: Model) -> None: script = """ const [root_id, done] = [...arguments]; (async function() { const view = Bokeh.index[root_id] if (view == null) done(false) else { await view.ready done(true) } })() """ if not driver.execute_async_script(script, root.id): raise RuntimeError(f"could not find a root view for {root}")
def get_assertion_for(webdriver: WebDriver, credential_id: List[int]): return webdriver.execute_async_script(GET_CREDENTIAL, credential_id)