TT#70901 selenium: rewrite tests to make them less sensitive to csc panel changes

these csc selenium tests have been rewritten due to many ui changes
should also be easier to adapt them if more ui changes are coming

Change-Id: I705a16ca256bd074bda16cf37dddcd67f6516b24
mr9.4
Nico Schedel 4 years ago
parent d2905c4fb6
commit cca148cd22

@ -1,197 +1,142 @@
import os import os
import random import random
from functions import Functions from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from functions.Functions import fill_element
from functions.Functions import scroll_to_element
from functions.Functions import click_js
def login_csc(driver, name, pwd): def login_csc(driver, name, pwd):
driver.get(os.environ['CATALYST_SERVER']) driver.get(os.environ['CATALYST_SERVER'])
driver.find_element_by_xpath( fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="text"]', name)
'//*[@id="csc-login-form"]//div//input[@type="text"]' fill_element(driver, '//*[@id="csc-login-card"]//div//input[@type="password"]', pwd)
).send_keys(name) driver.find_element_by_xpath('//*[@id="csc-login-card"]/div[3]/button[2]').click()
driver.find_element_by_xpath(
'//*[@id="csc-login-form"]//div//input[@type="password"]'
).send_keys(pwd)
driver.find_element_by_xpath(
'//*[@id="csc-login"]//div//button').click()
def logout_csc(driver): def logout_csc(driver):
Functions.step(driver, '//*[@id="csc-header-toolbar"]/div[1]/button') WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="csc-header-toolbar"]/div[1]/button')))
driver.find_element_by_xpath( driver.find_element_by_xpath('//*[@id="csc-header-toolbar"]/div[1]/button').click()
'//*[@id="csc-header-toolbar"]/div[1]/button').click() driver.find_element_by_xpath('/html/body//div[contains(text(), "Logout")]').click()
driver.find_element_by_xpath(
'/html/body//div[contains(text(), "Logout")]').click()
def login_panel(driver): def login_panel(driver):
driver.get(os.environ['CATALYST_SERVER'] + ":1443/logout") driver.get(os.environ['CATALYST_SERVER'] + ":1443/logout")
driver.get(os.environ['CATALYST_SERVER'] + ":1443") driver.get(os.environ['CATALYST_SERVER'] + ":1443")
driver.find_element_by_xpath( driver.find_element_by_xpath('//*[@id="username"]').send_keys('administrator')
'//*[@id="username"]').send_keys('administrator') driver.find_element_by_xpath('//*[@id="password"]').send_keys('administrator')
driver.find_element_by_xpath(
'//*[@id="password"]').send_keys('administrator')
driver.find_element_by_xpath('//*[@id="submit"]').click() driver.find_element_by_xpath('//*[@id="submit"]').click()
def logout_panel(driver): def logout_panel(driver):
driver.find_element_by_xpath( driver.find_element_by_xpath('//*[@id="top-nav"]/ul//a[contains(text(), "Logout")]').click()
'//*[@id="top-nav"]/ul//a[contains(text(), "Logout")]').click()
def create_customer(driver, name=None): def create_customer(driver, name=None):
if not name: if not name:
name = 'customer' + str(random.randint(1, 100000)) + 'test' name = 'customer' + str(random.randint(1, 100000)) + 'test'
Functions.step( WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver, '//*[@id="main-nav"]//*[contains(text(),"Settings")]') driver.find_element_by_xpath('//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_xpath(
'//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_link_text('Customers').click() driver.find_element_by_link_text('Customers').click()
driver.find_element_by_link_text('Create Customer').click() driver.find_element_by_link_text('Create Customer').click()
Functions.step(driver, '//*[@id="contactidtable"]//tr[1]//td/input') WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="contactidtable"]//tr[1]//td/input')))
Functions.scroll_to_element( scroll_to_element(driver, '//*[@id="contactidtable"]//tr[1]//td/input')
driver, '//*[@id="contactidtable"]//tr[1]//td/input') driver.find_element_by_xpath('//*[@id="contactidtable"]//tr[1]//td/input').click()
driver.find_element_by_xpath(
'//*[@id="contactidtable"]//tr[1]//td/input').click()
try: try:
driver.implicitly_wait(2) driver.implicitly_wait(2)
Functions.scroll_to_element(driver, '//*[@id="productidtable_filter"]/label/input') scroll_to_element(driver, '//*[@id="productidtable_filter"]/label/input')
Functions.fill_element(driver, '//*[@id="productidtable_filter"]/label/input', 'thisshouldnotexist') fill_element(driver, '//*[@id="productidtable_filter"]/label/input', 'thisshouldnotexist')
driver.find_element_by_css_selector('#productidtable tr > td.dataTables_empty') driver.find_element_by_css_selector('#productidtable tr > td.dataTables_empty')
Functions.fill_element(driver, '//*[@id="productidtable_filter"]/label/input', 'Basic') fill_element(driver, '//*[@id="productidtable_filter"]/label/input', 'Basic')
driver.find_element_by_xpath('//*[@id="productidtable"]//tr[1]//td/input').click() driver.find_element_by_xpath('//*[@id="productidtable"]//tr[1]//td/input').click()
driver.implicitly_wait(10) driver.implicitly_wait(10)
except Exception as e: except Exception as e:
driver.implicitly_wait(10) driver.implicitly_wait(10)
del e del e
Functions.scroll_to_element( scroll_to_element(driver, '//*[@id="billing_profileidtable"]//tr[1]//td/input')
driver, '//*[@id="billing_profileidtable"]//tr[1]//td/input') driver.find_element_by_xpath('//*[@id="billing_profileidtable"]//tr[1]//td/input').click()
driver.find_element_by_xpath( scroll_to_element(driver, '//*[@id="external_id"]')
'//*[@id="billing_profileidtable"]//tr[1]//td/input').click() fill_element(driver, '//*[@id="external_id"]', name)
Functions.scroll_to_element(
driver, '//*[@id="external_id"]')
Functions.fill_element(
driver, '//*[@id="external_id"]', name)
driver.find_element_by_xpath('//*[@id="save"]').click() driver.find_element_by_xpath('//*[@id="save"]').click()
return name return name
def delete_customer(driver, name): def delete_customer(driver, name):
Functions.step( WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver, '//*[@id="main-nav"]//*[contains(text(),"Settings")]') driver.find_element_by_xpath('//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_xpath(
'//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_link_text('Customers').click() driver.find_element_by_link_text('Customers').click()
Functions.fill_element( fill_element(driver, '//*[@id="Customer_table_filter"]//input', 'thisshouldnotexist')
driver, '//*[@id="Customer_table_filter"]//input', driver.find_element_by_css_selector('#Customer_table tr > td.dataTables_empty')
'thisshouldnotexist') fill_element(driver, '//*[@id="Customer_table_filter"]//input', name)
driver.find_element_by_css_selector( WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % name)))
'#Customer_table tr > td.dataTables_empty') click_js(driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Terminate")]')
Functions.fill_element(
driver, '//*[@id="Customer_table_filter"]//input', name)
Functions.step(
driver, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % name)
Functions.click_js(
driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Terminate")]')
driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click() driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click()
def create_subscriber(driver, customername, domainname): def create_subscriber(driver, customername, domainname):
Functions.step( WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver, '//*[@id="main-nav"]//*[contains(text(),"Settings")]') driver.find_element_by_xpath('//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_xpath(
'//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_link_text('Customers').click() driver.find_element_by_link_text('Customers').click()
Functions.fill_element( fill_element(driver, '//*[@id="Customer_table_filter"]//input', 'thisshouldnotexist')
driver, '//*[@id="Customer_table_filter"]//input', driver.find_element_by_css_selector('#Customer_table tr > td.dataTables_empty')
'thisshouldnotexist') fill_element(driver, '//*[@id="Customer_table_filter"]//input', customername)
driver.find_element_by_css_selector( WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % customername)))
'#Customer_table tr > td.dataTables_empty') click_js(driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]')
Functions.fill_element(
driver, '//*[@id="Customer_table_filter"]//input', customername)
Functions.step(
driver, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % customername)
Functions.click_js(
driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]')
driver.find_element_by_link_text('Expand Groups').click() driver.find_element_by_link_text('Expand Groups').click()
Functions.scroll_to_element(driver, 'Subscribers') scroll_to_element(driver, 'Subscribers')
driver.find_element_by_link_text("Create Subscriber").click() driver.find_element_by_link_text("Create Subscriber").click()
Functions.step(driver, '//*[@id="domainidtable_paginate"]/a[4]') WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="domainidtable_paginate"]/a[4]')))
Functions.fill_element( fill_element(driver, '//*[@id="domainidtable_filter"]//input', 'thisshouldnotexist')
driver, '//*[@id="domainidtable_filter"]//input', driver.find_element_by_css_selector('#domainidtable tr > td.dataTables_empty')
'thisshouldnotexist') fill_element(driver, '//*[@id="domainidtable_filter"]//input', domainname)
driver.find_element_by_css_selector( WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="domainidtable"]//tr[1]//td[text()="%s"]' % domainname)))
'#domainidtable tr > td.dataTables_empty') click_js(driver, '//*[@id="domainidtable"]/tbody/tr[1]/td[4]/input')
Functions.fill_element( driver.find_element_by_xpath('//*[@id="webusername"]').send_keys('testuser')
driver, '//*[@id="domainidtable_filter"]//input', domainname) driver.find_element_by_xpath('//*[@id="webpassword"]').send_keys('testpasswd')
Functions.step( driver.find_element_by_xpath('//*[@id="username"]').send_keys('testuser')
driver, '//*[@id="domainidtable"]//tr[1]//td[text()="%s"]' % domainname) driver.find_element_by_xpath('//*[@id="password"]').send_keys('testpasswd')
Functions.click_js( scroll_to_element(driver, '//*[@id="administrative"]')
driver, '//*[@id="domainidtable"]/tbody/tr[1]/td[4]/input') driver.find_element_by_xpath('//*[@id="administrative"]').click()
driver.find_element_by_xpath(
'//*[@id="webusername"]').send_keys('testuser')
driver.find_element_by_xpath(
'//*[@id="webpassword"]').send_keys('testpasswd')
driver.find_element_by_xpath(
'//*[@id="username"]').send_keys('testuser')
driver.find_element_by_xpath(
'//*[@id="password"]').send_keys('testpasswd')
driver.find_element_by_xpath('//*[@id="save"]').click() driver.find_element_by_xpath('//*[@id="save"]').click()
def delete_subscriber(driver, customername): def delete_subscriber(driver, customername):
Functions.step( WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver, '//*[@id="main-nav"]//*[contains(text(),"Settings")]') driver.find_element_by_xpath('//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_xpath(
'//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_link_text('Customers').click() driver.find_element_by_link_text('Customers').click()
Functions.fill_element( fill_element(driver, '//*[@id="Customer_table_filter"]//input', 'thisshouldnotexist')
driver, '//*[@id="Customer_table_filter"]//input', driver.find_element_by_css_selector('#Customer_table tr > td.dataTables_empty')
'thisshouldnotexist') fill_element(driver, '//*[@id="Customer_table_filter"]//input', customername)
driver.find_element_by_css_selector( WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % customername)))
'#Customer_table tr > td.dataTables_empty') click_js(driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]')
Functions.fill_element(
driver, '//*[@id="Customer_table_filter"]//input', customername)
Functions.step(
driver, '//*[@id="Customer_table"]//tr[1]//td[text()="%s"]' % customername)
Functions.click_js(
driver, '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]')
driver.find_element_by_link_text('Expand Groups').click() driver.find_element_by_link_text('Expand Groups').click()
Functions.scroll_to_element(driver, 'Subscribers') scroll_to_element(driver, 'Subscribers')
Functions.click_js( click_js(driver, '//*[@id="subscribers_table"]//tr[1]//td//a[contains(text(), "Terminate")]')
driver, '//*[@id="subscribers_table"]//tr[1]//td//a[contains(text(), "Terminate")]')
driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click() driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click()
def create_domain(driver, name=None): def create_domain(driver, name=None):
if not name: if not name:
name = 'domain' + str(random.randint(1, 100000)) + 'test' name = 'domain' + str(random.randint(1, 100000)) + 'test'
Functions.step(driver, '//*[@id="main-nav"]//*[contains(text(),"Settings")]') WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element_by_xpath( driver.find_element_by_xpath('//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
'//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_link_text('Domains').click() driver.find_element_by_link_text('Domains').click()
driver.find_element_by_link_text('Create Domain').click() driver.find_element_by_link_text('Create Domain').click()
Functions.step(driver, '//*[@id="reselleridtable"]//tr[1]/td[5]/input') WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="reselleridtable"]//tr[1]/td[5]/input')))
driver.find_element_by_xpath( driver.find_element_by_xpath('//*[@id="reselleridtable"]//tr[1]/td[5]/input').click()
'//*[@id="reselleridtable"]//tr[1]/td[5]/input').click() fill_element(driver, '//*[@id="domain"]', name)
Functions.fill_element(driver, '//*[@id="domain"]', name)
driver.find_element_by_xpath('//*[@id="save"]').click() driver.find_element_by_xpath('//*[@id="save"]').click()
return name return name
def delete_domain(driver, name): def delete_domain(driver, name):
Functions.step(driver, '//*[@id="main-nav"]//*[contains(text(),"Settings")]') WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="main-nav"]//*[contains(text(),"Settings")]')))
driver.find_element_by_xpath( driver.find_element_by_xpath('//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
'//*[@id="main-nav"]//*[contains(text(),"Settings")]').click()
driver.find_element_by_link_text('Domains').click() driver.find_element_by_link_text('Domains').click()
Functions.fill_element( fill_element(driver, '//*[@id="Domain_table_filter"]//input', 'thisshouldnotexist')
driver, '//*[@id="Domain_table_filter"]//input', driver.find_element_by_css_selector('#Domain_table tr > td.dataTables_empty')
'thisshouldnotexist') fill_element(driver, '//*[@id="Domain_table_filter"]//input', name)
driver.find_element_by_css_selector( WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="Domain_table"]//tr[1]//td[text()="%s"]' % name)))
'#Domain_table tr > td.dataTables_empty') click_js(driver, '//*[@id="Domain_table"]//tr[1]//td//a[contains(text(), "Delete")]')
Functions.fill_element(
driver, '//*[@id="Domain_table_filter"]//input', name)
Functions.step(
driver, '//*[@id="Domain_table"]//tr[1]//td[text()="%s"]' % name)
Functions.click_js(
driver, '//*[@id="Domain_table"]//tr[1]//td//a[contains(text(), "Delete")]')
driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click() driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click()

@ -42,16 +42,16 @@ def create_driver():
def wait_for_loading_screen(driver): def wait_for_loading_screen(driver):
xpath = '//div[@class="q-loading animate-fade fullscreen column flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat text-white"]'
driver.implicitly_wait(1) driver.implicitly_wait(1)
for i in range(1, 5): for i in range(1, 5):
step(driver, xpath, inv=True) WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((
By.XPATH, '//div[@class="q-loading animate-fade fullscreen column '
'flex-center z-maxundefined"]/svg[@class="q-spinner q-spinner-mat '
'text-white"]')))
driver.implicitly_wait(10) driver.implicitly_wait(10)
def step(driver, xpath, wait=10, inv=False): def wait_for_invisibility(driver, xpath):
if inv: driver.implicitly_wait(2)
ec = EC.invisibility_of_element_located WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((By.XPATH, xpath)))
else: driver.implicitly_wait(10)
ec = EC.element_to_be_clickable
WebDriverWait(driver, wait).until(ec((By.XPATH, xpath)))

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save