Beispiel #1
0
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)
Beispiel #2
0
 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)
Beispiel #3
0
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")
Beispiel #4
0
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}")
Beispiel #5
0
def get_assertion_for(webdriver: WebDriver, credential_id: List[int]):
    return webdriver.execute_async_script(GET_CREDENTIAL, credential_id)