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_1: logger = get_logger() selected_batch = '' result_message = None 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_list[random_number].click() time.sleep(5) def select_batch(self): batch_id = get_clickable_element(self.driver, By.XPATH, '/html/body/div[1]/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[3]/div[2]/div/div/div/div/div/div/div') batch_id.click() batch_id_list = self.driver.find_elements(By.XPATH, "//li") assert len(batch_id_list) > 0 random_number = random.randint(2, len(batch_id_list) - 1) self.selected_batch = batch_id_list[random_number].text self.logger.info(f"Selected Batch: {batch_id_list[random_number].text}") batch_id_list[random_number].click() time.sleep(5) def check_group_no(self): checkbox_list = self.driver.find_elements(By.XPATH, "//div[@data-testid='stCheckbox']") assert len(checkbox_list) > 0 random_number = random.randint(0, len(checkbox_list) - 1) random_elements = random.sample(checkbox_list, random_number) checked_groups = '' for checkbox in random_elements: checkbox.click() checked_groups = f'{checked_groups}{checkbox.text}, ' self.logger.info(f"checked Group No.: {checked_groups[:-2]}") time.sleep(5) def click_read_the_contracts_from_path(self): read_the_contracts_from_path_btn = get_clickable_element(self.driver, By.XPATH, '/html/body/div[1]/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[6]/div/button') read_the_contracts_from_path_btn.click() time.sleep(5) def check_table_contain(self): result_table = self.driver.find_element(By.XPATH, "//table[@aria-colcount='9']") rows = result_table.find_elements(By.XPATH, ".//tbody/tr") if len(rows) > 0: self.logger.info(f"{len(rows)} contracts are read from batch: {self.selected_batch}") assert True else: assert False time.sleep(5) def click_run_doczy_ai_pipeline(self): run_doczy_ai_pipeline_btn = get_clickable_element(self.driver, By.XPATH, '/html/body/div[1]/div[1]/div[1]/div/div/div/section/div[1]/div/div/div/div[11]/div[2]/div/div/div/div/div/button') run_doczy_ai_pipeline_btn.click() time.sleep(3) self.result_message = get_element(self.driver, By.XPATH, "//p[starts-with(., 'Success')]") time.sleep(3)