Beispiel #1
0
def focus():
    tc('focus on business console')
    g.wait20.until(EC.number_of_windows_to_be(2))
    g.focus(1)  #bc is an alt tab-window
    g.wait60.until(
        EC.presence_of_element_located(
            (By.XPATH, "//div[@id='stepSummaryTable']")))
Beispiel #2
0
def navtab (t='Overview'):
    """
    nav tab: Overview|Stage Instances|Process Instances
    """
    tc('nav tab '+t)
    g.wait.until(EC.element_to_be_clickable((By.XPATH, "//a[.='"+t+"']" )))\
            .send_keys(Keys.RETURN)
Beispiel #3
0
def close(refresh=True):
    #sleep(5) #tmp so page seen on demo
    tc('close business console tab/window')
    g.driver.close()  #close tab-window
    g.focus()
    refresh and g.driver.refresh()  #it'd be stale overwise
    g.focus_main()  #back to main window
Beispiel #4
0
def kpidetail():
    """click kpi detail magglass link
    """
    tc('click kpi detail magglass')
    x = "//a[contains (@href,':viewMonitor')]"
    g.wait.until(EC.element_to_be_clickable((By.XPATH,
        x))).send_keys(Keys.RETURN)
Beispiel #5
0
def deploy(d, a='Deploy All'):  #a: Deploy Updates | Deploy All
    e = envid(d)
    tc('deploy env ' + e)
    x = "//*/a[contains (@href, 'environmentID=" + e + "&') and contains (@href, 'isDeployed=')]"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    tc('click ' + a)
    x = "//*[@value='" + a + "']"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    tc('check deployment status')
    x = "//*/b[text()='Successfully deployed environment.']"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    #may check just specific server deploy status
    #x="//*/textarea[@name='deployResult']"; e = g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    #print(e.get_attribute('value'));
    #assert 'Deployed logical server \"Analytic Engine v' in e.get_attribute('value') #focus on ok for one server

    tc('return to env list')
    x = "//*[@type='submit' and @value='Close']"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    l = d.get('name', 'AAenv')
    tc('locate env link ' + l)
    g.wait.until(EC.element_to_be_clickable((By.LINK_TEXT, l)))
Beispiel #6
0
def validatepi(pid):
    """
    validate instance details by pid
    """
    tc('located pid=' + pid)
    g.wait20.until(
        EC.presence_of_element_located((By.XPATH, "//td[.='" + pid + "']")))
Beispiel #7
0
def exportenv(env):
    """export env.name for env.rel; ret exported filename"""
    e = env['name']
    tc('export env ' + e)
    xe = "//*[text()='" + e + "']/preceding::td[1]/input"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, xe))).click()
    import glob, os
    base = env['exp_dir'] + '/ExportedEnvironments'
    out = base + env['rel'] + '.xml'
    wildcard = base + '*.xml'
    before = glob.glob(wildcard)
    x = "//*[@value='Export Environment...']"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    for i in range(0, 5):  #process uploaded file
        time.sleep(1)
        for f in glob.glob(wildcard):
            #print(f)
            if f not in before:
                if os.path.isfile(out + '.bak'):
                    os.remove(out + '.bak')
                if os.path.isfile(out):
                    os.rename(out, out + '.bak')
                time.sleep(3)  #file may be there but not finish download
                os.rename(f, out)
                #uncheck env so func can be called back to back
                g.wait.until(EC.element_to_be_clickable(
                    (By.XPATH, xe))).click()
                return out
    raise Exception("exported file not found: " + wildcard)
Beispiel #8
0
def importenv(env={}):
    tc('import env ' + str(env))
    x = "//*[@value='Import Environment...']"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    g.wait.until(EC.number_of_windows_to_be(2))
    g.focus(1)
    x = "//*/input[@name='uploadedFile']"
    e = g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    #remote - /  local = \\ path separators!
    print(env['file'])
    e.send_keys(env['file'])
    x = ".//*/input[@value='OK']"

    handles = g.driver.window_handles
    #g.wait.until(EC.element_to_be_clickable((By.XPATH, x))).send_keys(Keys.RETURN)
    g.driver.find_element(By.XPATH, x).send_keys(Keys.RETURN)
    g.disappear(handles)  #make sure import dialog closed
    if env.get('migrate', False):
        g.wait.until(EC.number_of_windows_to_be(2))  #migr dialog poped
        g.focus(1)
        x = ".//*/input[@value='Yes']"
        g.wait.until(EC.element_to_be_clickable(
            (By.XPATH, x))).send_keys(Keys.RETURN)
    g.wait.until(EC.number_of_windows_to_be(1))  #file upload dialog gone
    g.focus()
Beispiel #9
0
def finish(d):
    tc('click finish')
    x = "//*[@type='button' and @name='finish']"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    x = "//*[@value='Add Environment...']"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
Beispiel #10
0
def selectvolumes(d={'level': 'proc', 'range': 'curr', 'status': 'All'}):
    """
    select volume for 3 different combos:
    {'level':'proc|step','range':'curr|prev','status:'All|Started|In Progress|Completed'}
    """
    tc('select volume->' + d['level'] + '->' + d['range'] + '->' + d['status'])
    if d['range'] == 'curr':
        level = {
            'step': ['stepVolumeValueText', 'step'],
            'proc': ['volumeValueText', 'vol']
        }
    else:
        level = {
            'step': ['stepVolumePreviousValueText', 'stepPrevious'],
            'proc': ['volumePreviousValueText', 'volPrevious']
        }
    x = "//a[contains (@id, '" + level[d['level']][0] + "')]"  #
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x))).click()
    status = {
        'All': 'TotalLink',
        'Started': 'StartedLink',
        'In Progress': 'InProgressLink',
        'Completed': 'CompLink'
    }
    if d['level'] == 'step':
        status['Started'] = 'StartLink'
        status['In Progress'] = 'InProgLink'
    x = "//*/a[contains (@id, '" + level[d['level']][1] + status[
        d['status']] + "')]"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x))).click()
    overlay()
Beispiel #11
0
def envnames():
    """ret {name:id} - names from single/mult pages on env list
       except if blank list
    """
    tc('get env names from list')
    x = "//span/a[contains(@href,'webm.apps.config.env?')] | //*[contains(text(),'No Environments Defined')]"
    e = g.wait.until(EC.visibility_of_all_elements_located((By.XPATH, x)))
    if "No Environments Defined" in e[0].text:
        return {}
    try:  #reset to the 1st page
        o = g.driver.find_element(By.LINK_TEXT, '1')
        o.click()
    except:
        pass
    names = {}
    while True:
        g.wait.until(EC.visibility_of_all_elements_located((By.XPATH, x)))
        es = g.driver.find_elements_by_xpath(x)
        #print (len(es))
        for e in es:
            #print(e.text, e.get_attribute('href'))
            id = re.search('.+environmentID=(\d+)',
                           e.get_attribute('href')).group(1)
            names[e.text] = id
        try:
            o = g.driver.find_element(By.PARTIAL_LINK_TEXT, 'Next')
            o.click()
            g.wait.until(EC.staleness_of(o))
            tc("jump to next page")
        except:
            break
    return names
Beispiel #12
0
def delete(l):
    """
    del envs
    """
    tc('del envs')
    if type(l) is str: l = [{'name': l}]
    if type(l) is dict: l = [l]
    x = "//*[@value='Add Environment...']"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    for u in l:
        x = "//*[@type='checkbox' and @value='" + envid(u) + "']"
        e = g.driver.find_element(By.XPATH, x)
        u = u.get('name', 'AAenv')
        if g.FF: e.send_keys(Keys.SPACE)
        else: e.click()
    x = "//*[@type='button' and @value='Delete']"
    e = g.driver.find_element(By.XPATH, x)
    if e.is_enabled():
        e.send_keys(Keys.RETURN)
        x = "//*[@value='Delete' and @name='submitbutton']"
        #time.sleep(2)
        msg = Alert(g.driver).text
        Alert(g.driver).accept()
        print('*deleted existing envs:', l)
        try:
            x = "//*/a[text() = '" + u + "']"
            e = g.driver.find_element(By.XPATH, x)
            print('*env still seen' + u)
            assert False, 'env steel seen!'
        except:
            print('*no env seen as expected ' + u)
    else:
        print('*no existing envs:', l)
Beispiel #13
0
def create(env):
    """
    create ccs env; ret id
    """
    before = envnames()
    tc('click add env btn')
    x = "//*[@value='Add Environment...']"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x))).\
            send_keys(Keys.RETURN)
    tc('enter env name ' + env.get("name"))
    x = "//*[@name='environmentName']"
    e = g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    e.clear()
    e.send_keys(env.get('name'))
    tc('enter env desc' + env.get("desc"))
    e = g.driver.find_element(By.NAME, 'environmentDesc')
    e.clear()
    e.send_keys(env.get('desc'))
    tc('click save env button')
    e = g.driver.find_element(By.NAME, 'save').send_keys(Keys.RETURN)
    tc('check env is in list')
    for k, v in envnames().items():
        if k not in before:
            env['id'] = v
            return
    raise Exception('failed lookup env id')
Beispiel #14
0
def navheadermenu(name):
    """
    navigate header menu item @name
    """
    tc('nav header menu -> ' + name)
    g.wait.until(
        EC.element_to_be_clickable(
            (By.XPATH, "//a[contains(@id,'" + name + "')]"))).click()
Beispiel #15
0
def finish(d):
    tc('click finish')
    x = "//*[@type='button' and @name='finish']"
    g.wait.until(EC.element_to_be_clickable(
        (By.XPATH, x))).send_keys(Keys.RETURN)
    l = d.get('name', 'AAenv')
    tc('locate env link ' + l)
    g.wait.until(EC.element_to_be_clickable((By.LINK_TEXT, l)))
Beispiel #16
0
def clickpi(ind='1'):
    """
    click on ind'th proc inst link in table; ret: pid
    """
    tc('click on pi link '+ind)
    e=g.wait.until(EC.element_to_be_clickable((By.XPATH,
        "//table[@id='processInstancesTable']//tr[@id='"+ind+"']/td[3]/a")))
    e.click()
    return e.text
Beispiel #17
0
def magglass(p='0'):
    """
    click magnifying glass link to BC
    """
    tc('click on magnifying glass link for process ' + p)
    #handles all model type variations
    x = "//a[contains (@id, 'resultsTable:__row" + p + ":detail')]"
    e = g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    e.click()
Beispiel #18
0
def validateid(p):
    """
    click on Process Instance ID link
    """
    tc('validate instance ' + p)
    x = "//*/span[contains (@id, 'instanceId')]"
    t = g.wait.until(EC.visibility_of_element_located((By.XPATH, x))).text
    if t != p:
        tc('', 'fail')
Beispiel #19
0
def search(text):
    """
    search for text in search widgets (almost in all)
    """
    tc('search ' + text)
    g.wait.until(EC.element_to_be_clickable((By.XPATH,\
        "//input[contains (@name,'keywordsTextInput')]"))).send_keys(text)
    g.wait.until(EC.element_to_be_clickable((By.XPATH,\
        "//button[contains (@name,'impleSearchGoButton')]"))).click()
    m.overlay_handler()
Beispiel #20
0
def descriptionlink(i=0):
    """click on i-th problem desc link in problems table, ret: link descr
    """
    tc('click on ' + str(i) + ' problem in problems list')
    x = "//a[contains (@href,':viewDetail')]"
    g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    l = g.driver.find_elements_by_xpath(x)
    t = l[i * 2].text
    l[i * 2].send_keys(Keys.RETURN)  #every other link is magglass
    return t
Beispiel #21
0
def navenv(d=ccs):
    """
    nav to env
    """
    l = d.get('name', 'AAenv')
    tc('locate click env link ' + l)
    g.wait.until(EC.element_to_be_clickable(
        (By.LINK_TEXT, l))).send_keys(Keys.RETURN)
    x = "//*[@name='environmentName']"
    e = g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
Beispiel #22
0
def caf_error():
    """check for caf errors
        @ret [caf error elements]
    """
    #x = "//*[@class='caf-error-summary']"
    tc('check for caf errors')
    try:
        e = g.driver.find_elements_by_class_name('caf-error-summary')
    except:
        pass
    return e
Beispiel #23
0
def navconfig(c, click=True, index=0):
    """
    nav to config @c on configure servers tab, @click on @index conf(there may be more than 1 on page)
    ret [] of configs named @c
    """
    tc('nav/click/index: ' + c + '/' + str(click) + '/' + str(index))
    g.wait.until(EC.element_to_be_clickable((By.LINK_TEXT, c)))
    e = g.driver.find_elements_by_link_text(c)
    if click:  #click on index config name occurrence
        e[index].send_keys(Keys.RETURN)
    return e
Beispiel #24
0
def findsteps():
    tc('find all steps on proc diagram')
    #select all step images //*/img[contains (@style,'cursor')]
    #select all step labels (which contain their names)
    x = "//*/img[contains (@style,'cursor')]/ancestor::div[2]/following-sibling::div[1]"
    es = g.driver.find_elements_by_xpath(x)
    steps = []
    for s in es:
        steps.append(s.text)
    tc('found steps on proc diagram ' + str(len(steps)))
    return steps
Beispiel #25
0
def piidlink(p='0', click=True):
    """
    click Process Instance ID link to BC, ret pid and may click link
    """
    tc('click on instance ID link for process ' + p)
    #handles all model type variations
    x = "//a[contains (@id, 'resultsTable:__row" + p + ":instanceId')\
    or contains (@id, 'resultsTable:__row" + p + ":processInstance')]"
    e = g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    click and e.click()
    return e.text
Beispiel #26
0
def checkexecution(p,s=True):
    """validate execution flag"""
    tc('check execution flag for model')
    x="//img[contains (@id,'executionEnabledIcon') and contains (@id,'"+p+"')]"
    se=g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    s0=se.get_attribute('src')
    if 'Icon_Configured.png' in s0:
        s0=True
    else:
        s0=False
    assert s is s0
Beispiel #27
0
def select_proc (name):
    """
    select process in dropdown
    ret Select obj
    """
    tc('select proc '+name)
    s=Select (g.wait.until(EC.element_to_be_clickable((By.XPATH,
        TP+"select[@id='processSelectList']"))))
    sleep(1)
    s.select_by_visible_text(name)
    return s
Beispiel #28
0
def clicksi(ind='1'):
    """
    click on ind'th stage inst link in table; ret: pid
    """
    tc('click on stage link '+ind)
    e=g.wait.until(EC.element_to_be_clickable((By.XPATH,
        "//table[@id='stageInstancesTable']//tr[@id='"+ind+"']//td[5]/a")))
    text = e.text
    e.send_keys(Keys.RETURN)
    tc('returning '+text)
    return text
Beispiel #29
0
def search(text):
    """
    search for text in search widgets like on Problems page
    """
    tc('search ' + text)
    e = g.wait.until(EC.element_to_be_clickable((By.XPATH,\
        "//input[@name='keywords']")))
    e.clear()  #input may retain
    e.send_keys(text)
    g.wait.until(EC.element_to_be_clickable((By.XPATH,\
        "//input[@name='dosearch']"))).click()
    g.wait.until(EC.staleness_of(e))
Beispiel #30
0
def checkanalysis(p,s=True):
    """validate analysis flag"""
    tc('check analysis flag for model WMN-6416')
    x="//img[contains (@id,'analysisEnabledIcon') and contains (@id,'"+p+"')]"
    se=g.wait.until(EC.element_to_be_clickable((By.XPATH, x)))
    s0=se.get_attribute('src')
    #print(s0,'-----')'''
    if 'Icon_Configured.png' in s0:
        s0=True
    else:
        s0=False
    assert s is s0