import random import time from selenium.common import InvalidArgumentException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from elements.interface_2_elements import Interface_2_elements from utils.element_related_methods import get_clickable_element, get_element, get_invisible_element from utils.logger import get_logger class Interface_2(Interface_2_elements): logger = get_logger() selected_batch = '' selected_contract = '' selected_field_group = '' result_message = None p_element = None def __init__(self, driver, config): self.driver = driver self.config = config def select_client(self, client_name=''): client_name_dropdown = super().get_client_name_dropdown(self.driver, self.config) client_name_dropdown.click() client_list = super().get_client_list(self.driver) assert len(client_list) > 0 if client_name == '': random_number = random.randint(0, len(client_list) - 1) time.sleep(1) self.logger.info(f"Selected Client Name: {client_list[random_number].text}") client_name = client_list[random_number].text client_list[random_number].click() else: # assert client_name in client_list, "Selected Client not present" for client in client_list: print(client.text) if client_name == client.text: client.click() break time.sleep(20) return client_name def select_batch(self, batch_id_name=''): batch_id = super().get_batch_id(self.driver, self.config)#get_clickable_element(self.driver, By.XPATH, '/html/body/div/div[1]/div[1]/div/div/div/section[2]/div[1]/div/div/div/div[5]/div[2]/div/div/div/div/div') batch_id.click() batch_id_list = super().get_batch_id_list(self.driver)#self.driver.find_elements(By.XPATH, "//li") assert len(batch_id_list) > 0 if batch_id_name == '': random_number = random.randint(1, len(batch_id_list) - 1) self.selected_batch = batch_id_list[random_number].text time.sleep(1) self.logger.info(f"Selected Batch: {batch_id_list[random_number].text}") batch_id_name = batch_id_list[random_number].text time.sleep(1) batch_id_list[random_number].click() else: assert batch_id_name in batch_id_list, "Selected Batch Id not present" for batch in batch_id_list: if batch.text == batch_id_name: batch.click() break time.sleep(5) return batch_id_name def select_contract(self): contract = super().get_contract_name(self.driver, self.config) contract.click() contract_list = super().get_contract_name_list(self.driver) assert len(contract_list) > 0 random_number = random.randint(1, len(contract_list) - 1) time.sleep(1) self.selected_contract = contract_list[random_number].text time.sleep(1) self.logger.info(f"Selected contract: {contract_list[random_number].text}") time.sleep(1) contract_list[random_number].click() time.sleep(5) def select_field_group(self): field_group = super().get_field_group(self.driver, self.config) field_group.click() field_group_list = super().get_field_group_list(self.driver) assert len(field_group_list) > 0 random_number = random.randint(1, len(field_group_list) - 1) time.sleep(1) self.selected_field_group = field_group_list[random_number].text time.sleep(1) self.logger.info(f"Selected field froup: {field_group_list[random_number].text}") time.sleep(1) field_group_list[random_number].click() time.sleep(5) def click_show_results(self): show_result_btn = super().get_show_result_btn(self.driver, self.config) show_result_btn.click() time.sleep(15) def check_table_contain(self): result_table = super().get_result_table(self.driver, self.config) rows = super().get_table_rows(result_table) if len(rows) > 0: self.logger.info(f"{len(rows)} fields are read from contract: {self.selected_contract}") assert True else: assert False time.sleep(5) def click_kickoff_database_integration_btn(self): kickoff_database_btn = super().get_kickoff_database_btn(self.driver, self.config) kickoff_database_btn.click() time.sleep(15) def check_error_message(self): error_message = super().get_error_toast(self.driver, self.config) return error_message.text