import random import time from selenium.common import InvalidArgumentException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from utils.element_related_methods import get_clickable_element, get_element, get_invisible_element from utils.logger import get_logger class Interface_0: logger = get_logger() p_element = None def __init__(self, driver): self.driver = driver self.client_name_dropdown = get_clickable_element(driver, By.XPATH, '/html/body/div/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[3]/div[2]/div/div/div/div/div/div/div') def select_client(self): self.client_name_dropdown.click() client_list = self.driver.find_elements(By.XPATH, "//li") assert len(client_list) > 0 random_number = random.randint(1, 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() time.sleep(5) return client_name def upload_files(self, config): # file_input = self.driver.find_element(By.XPATH, "//input[@type='file']") try: file_input = get_invisible_element(self.driver, By.XPATH, "//input[@type='file']") contract_files = config["contract_files"] random_count = random.randint(1, len(contract_files)) random_elements = random.sample(contract_files, random_count) contracts = f'\n{config['contract_files_path']}'.join(random_elements) self.logger.info(f"Selected Contract File Name: {', '.join(random_elements)}") file_input.send_keys(f"{config['contract_files_path']}{contracts}") time.sleep(1) WebDriverWait(self.driver, timeout=50).until( lambda browser: len(browser.find_elements(By.XPATH, '//div[@role="progressbar"]')) == 0 ) time.sleep(5) except InvalidArgumentException: self.logger.info(f"File not found in test folder{', '.join(random_elements)}") except: self.logger.info(f"Exception occur") def create_batch(self): create_batch_btn = self.driver.find_element(By.XPATH, "//div[@data-testid='stButton']/button[@data-testid='baseButton-secondary']") create_batch_btn.click() self.logger.info("Creating batch") time.sleep(3) self.p_element = get_element(self.driver, By.XPATH, "//p[starts-with(., 'batch')]") time.sleep(3)