From e3ff694d196062ce65fb6921b0fe4d44bcd9e09a Mon Sep 17 00:00:00 2001 From: Nico Schedel Date: Fri, 10 Jan 2020 11:59:19 +0100 Subject: [PATCH] TT#70901 selenium: add create/delete_customer - add functions create and delete_customer, so that you are guarenteed to start with an empty customer with no subscribers - edited tests to use those new functions Change-Id: I853309645252cc2991e5afac6046f325c4d9620c --- t/selenium/functions/Collections.py | 114 +++++++++++++++++++++++++--- t/selenium/testrun.py | 27 +++---- 2 files changed, 117 insertions(+), 24 deletions(-) diff --git a/t/selenium/functions/Collections.py b/t/selenium/functions/Collections.py index e1f179e0..ee7121fe 100644 --- a/t/selenium/functions/Collections.py +++ b/t/selenium/functions/Collections.py @@ -1,4 +1,6 @@ import os +import random +from functions import Functions from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains @@ -43,18 +45,88 @@ def logout_panel(driver): '//*[@id="top-nav"]/ul//a[contains(text(), "Logout")]').click() -def create_subscriber(driver): +def create_customer(driver, name=None): + if not name: + name = 'customer' + str(random.randint(1, 100000)) + 'test' 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('Create Customer').click() + driver.execute_script( + "arguments[0].scrollIntoView();", driver.find_element_by_xpath( + '//*[@id="contactidtable"]//tr[1]//td/input')) + driver.find_element_by_xpath( + '//*[@id="contactidtable"]//tr[1]//td/input').click() + driver.execute_script( + "arguments[0].scrollIntoView();", driver.find_element_by_xpath( + '//*[@id="billing_profileidtable"]//tr[1]//td/input')) + driver.find_element_by_xpath( + '//*[@id="billing_profileidtable"]//tr[1]//td/input').click() + driver.execute_script( + "arguments[0].scrollIntoView();", driver.find_element_by_xpath( + '//*[@id="external_id"]')) + Functions.fill_element( + driver, '//*[@id="external_id"]', name) + driver.find_element_by_xpath('//*[@id="save"]').click() + return name + + +def delete_customer(driver, name): + driver.find_element_by_xpath( + '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click() + driver.find_element_by_link_text('Customers').click() + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', + 'thisshouldnotexist') + driver.find_element_by_css_selector( + '#Customer_table tr > td.dataTables_empty') + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', name) + driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), "Details")]') hoverclick = ActionChains(driver) hoverclick.move_to_element(driver.find_element_by_xpath( '//*[@id="Customer_table"]//tr[1]')) hoverclick.click(driver.find_element_by_xpath( '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), ' - '"Details")]') + '"Terminate")]') ) hoverclick.perform() + driver.find_element_by_xpath('//*[@id="dataConfirmOK"]').click() + + +def create_subscriber(driver, customername=None): + driver.find_element_by_xpath( + '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click() + driver.find_element_by_link_text('Customers').click() + if customername: + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', + 'thisshouldnotexist') + driver.find_element_by_css_selector( + '#Customer_table tr > td.dataTables_empty') + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', customername) + driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains' + '(text(), "Details")]') + hoverclick = ActionChains(driver) + hoverclick.move_to_element(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]')) + hoverclick.click(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), ' + '"Details")]') + ) + hoverclick.perform() + else: + hoverclick = ActionChains(driver) + hoverclick.move_to_element(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]')) + hoverclick.click(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), ' + '"Details")]') + ) + hoverclick.perform() driver.find_element_by_link_text('Expand Groups').click() driver.execute_script( 'arguments[0].scrollIntoView();', @@ -79,18 +151,38 @@ def create_subscriber(driver): driver.find_element_by_xpath('//*[@id="save"]').click() -def delete_subscriber(driver): +def delete_subscriber(driver, customername=None): driver.find_element_by_xpath( '//*[@id="main-nav"]//*[contains(text(),"Settings")]').click() driver.find_element_by_link_text('Customers').click() - hoverclick = ActionChains(driver) - hoverclick.move_to_element(driver.find_element_by_xpath( - '//*[@id="Customer_table"]//tr[1]')) - hoverclick.click(driver.find_element_by_xpath( - '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), ' - '"Details")]') - ) - hoverclick.perform() + if customername: + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', + 'thisshouldnotexist') + driver.find_element_by_css_selector( + '#Customer_table tr > td.dataTables_empty') + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', customername) + driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains' + '(text(), "Details")]') + hoverclick = ActionChains(driver) + hoverclick.move_to_element(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]')) + hoverclick.click(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), ' + '"Details")]') + ) + hoverclick.perform() + else: + hoverclick = ActionChains(driver) + hoverclick.move_to_element(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]')) + hoverclick.click(driver.find_element_by_xpath( + '//*[@id="Customer_table"]//tr[1]//td//a[contains(text(), ' + '"Details")]') + ) + hoverclick.perform() driver.find_element_by_link_text('Expand Groups').click() driver.execute_script( 'arguments[0].scrollIntoView();', diff --git a/t/selenium/testrun.py b/t/selenium/testrun.py index 203115f5..76bccc3d 100644 --- a/t/selenium/testrun.py +++ b/t/selenium/testrun.py @@ -13,6 +13,7 @@ from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By domainname = "thistextwillbereplaced" +customername = "thistextwillalsobereplaced" filename = 0 @@ -29,13 +30,15 @@ class testrun(unittest.TestCase): self.driver.set_page_load_timeout(10) self.longMessage = True - def test_a_create_subscriber(self): + def test_a_preparation(self): global domainname + global customername global filename - filename = "test_a_create_subscriber.png" + filename = "test_a_preparation.png" driver = self.driver Collections.login_panel(driver) - Collections.create_subscriber(self.driver) + customername = Collections.create_customer(driver) + Collections.create_subscriber(driver, customername) driver.find_element_by_link_text('Expand Groups').click() domainname = driver.find_element_by_xpath( '//*[@id="subscribers_table"]//tr[1]/td[3]').text @@ -894,21 +897,19 @@ class testrun(unittest.TestCase): "/login/subscriber/#/login", "Logout failed") filename = 0 - def test_z_delete_subscriber(self): + def test_z_cleanup(self): global domainname + global customername global filename - filename = "test_z_delete_subscriber.png" + filename = "test_z_cleanup.png" driver = self.driver Collections.login_panel(driver) - Collections.delete_subscriber(driver) - driver.find_element_by_link_text('Expand Groups').click() - driver.execute_script( - 'arguments[0].scrollIntoView();', - driver.find_element_by_link_text('Subscribers') - ) + Collections.delete_customer(driver, customername) + Functions.fill_element( + driver, '//*[@id="Customer_table_filter"]//input', customername) self.assertTrue(driver.find_element_by_css_selector( - '#subscribers_table tr > td.dataTables_empty').is_displayed(), - "Subscriber has not been deleted") + '#Customer_table tr > td.dataTables_empty').is_displayed(), + "Customer has not been deleted") filename = 0 def tearDown(self):