| 
 | 1 | +from selenium.webdriver import ActionChains  | 
 | 2 | +import selenium.webdriver.support.ui as ui  | 
 | 3 | +from selenium.webdriver.remote import webelement  | 
1 | 4 | from Library.store import Store  | 
2 | 5 | 
 
  | 
3 | 6 | 
 
  | 
4 | 7 | class Locator(Store):  | 
5 | 8 | 
 
  | 
6 | 9 |     def __init__(self, by: str, value: str) -> None:  | 
 | 10 | +        super().__init__()  | 
7 | 11 |         self.by = by  | 
8 | 12 |         self.value = value  | 
9 | 13 | 
 
  | 
10 |  | -    def send_keys(self, string) -> None:  | 
11 |  | -        Store.current_driver.find_element(self.by, self.value).send_keys(string)  | 
 | 14 | +    def send_keys(self, string) -> bool:  | 
 | 15 | +        try:  | 
 | 16 | +            Store.current_driver.find_element(self.by, self.value).send_keys(string)  | 
 | 17 | +        except Exception as e:  | 
 | 18 | +            print("Send keys not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 19 | +            return False  | 
 | 20 | +        else:  | 
 | 21 | +            return True  | 
 | 22 | + | 
 | 23 | +    def click(self) -> bool:  | 
 | 24 | +        try:  | 
 | 25 | +            Store.current_driver.find_element(self.by, self.value).click  | 
 | 26 | +        except Exception as e:  | 
 | 27 | +            print("click not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 28 | +            return False  | 
 | 29 | +        else:  | 
 | 30 | +            return True  | 
 | 31 | + | 
 | 32 | +    def mouse_over(self) -> bool:  | 
 | 33 | +        hovering_element = Store.current_driver.find_element(self.by, self.value)  | 
 | 34 | +        hover = ActionChains(Store.current_driver).move_to_element(hovering_element)  | 
 | 35 | +        try:  | 
 | 36 | +            hover.perform()  | 
 | 37 | +        except Exception as e:  | 
 | 38 | +            print("mouse_over not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 39 | +            return False  | 
 | 40 | +        else:  | 
 | 41 | +            return True  | 
 | 42 | + | 
 | 43 | +    def text(self) -> str:  | 
 | 44 | +        try:  | 
 | 45 | +            txt_value = Store.current_driver.find_element(self.by, self.value).text  | 
 | 46 | +        except Exception as e:  | 
 | 47 | +            print("get text not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 48 | +            return False  | 
 | 49 | +        else:  | 
 | 50 | +            return txt_value  | 
 | 51 | + | 
 | 52 | +    def texts(self) -> list:  | 
 | 53 | +        try:  | 
 | 54 | +            arr_text = []  | 
 | 55 | +            elements = Store.current_driver.find_elements(self.by, self.value)  | 
 | 56 | +            for ele in elements:  | 
 | 57 | +                arr_text.append(ele.text)  | 
 | 58 | +        except Exception as e:  | 
 | 59 | +            print("get texts not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 60 | +            return [False]  | 
 | 61 | +        else:  | 
 | 62 | +            return arr_text  | 
 | 63 | + | 
 | 64 | +    def is_displayed(self) -> bool:  | 
 | 65 | +        try:  | 
 | 66 | +            return Store.current_driver.find_elements(self.by, self.value).is_displayed()  | 
 | 67 | +        except Exception as e:  | 
 | 68 | +            print("is_displayed not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 69 | +            return False  | 
 | 70 | + | 
 | 71 | +    def is_enabled(self) -> bool:  | 
 | 72 | +        try:  | 
 | 73 | +            return Store.current_driver.find_elements(self.by, self.value).is_enabled()  | 
 | 74 | +        except Exception as e:  | 
 | 75 | +            print("is_enabled not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 76 | +            return False  | 
 | 77 | + | 
 | 78 | +    def is_displayed_with_wait(self, timeout=10) -> bool:  | 
 | 79 | +        try:  | 
 | 80 | +            wait = ui.WebDriverWait(Store.current_driver, timeout)  | 
 | 81 | +            return wait.until(lambda element: Store.current_driver.find_element(self.by, self.value).is_displayed())  | 
 | 82 | +        except Exception as e:  | 
 | 83 | +            print("is_displayed_with_wait not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 84 | +            return False  | 
 | 85 | + | 
 | 86 | +    def click_if_displayed(self) -> bool:  | 
 | 87 | +        try:  | 
 | 88 | +            self.is_displayed_with_wait()  | 
 | 89 | +            var = Store.current_driver.find_element(self.by, self.value).click  | 
 | 90 | +        except Exception as e:  | 
 | 91 | +            print("click if displayed not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 92 | +            return False  | 
 | 93 | +        else:  | 
 | 94 | +            return True  | 
 | 95 | + | 
 | 96 | +    def scroll_to_locator(self) -> bool:  | 
 | 97 | +        try:  | 
 | 98 | +            scroll_locator = Store.current_driver.find_element(self.by, self.value)  | 
 | 99 | +            actions = ActionChains(Store.current_driver)  | 
 | 100 | +            actions.move_to_element(scroll_locator)  | 
 | 101 | +            actions.perform()  | 
 | 102 | +        except Exception as e:  | 
 | 103 | +            print("scroll to locator not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 104 | +            return False  | 
 | 105 | +        else:  | 
 | 106 | +            return True  | 
 | 107 | + | 
 | 108 | +    def scroll_to_locator_using_js(self) -> bool:  | 
 | 109 | +        try:  | 
 | 110 | +            scroll_locator = Store.current_driver.find_element(self.by, self.value)  | 
 | 111 | +            Store.current_driver.execute_script('arguments[0].scrollIntoView(true);', scroll_locator)  | 
 | 112 | +        except Exception as e:  | 
 | 113 | +            print("scroll to locator using js not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 114 | +            return False  | 
 | 115 | +        else:  | 
 | 116 | +            return True  | 
 | 117 | + | 
 | 118 | +    def move_and_click(self) -> bool:  | 
 | 119 | +        try:  | 
 | 120 | +            self.scroll_to_locator()  | 
 | 121 | +            self.mouse_over()  | 
 | 122 | +            self.click()  | 
 | 123 | +        except Exception as e:  | 
 | 124 | +            print("move and click not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 125 | +            return False  | 
 | 126 | +        else:  | 
 | 127 | +            return True  | 
 | 128 | + | 
 | 129 | +    def get_element(self) -> webelement.WebElement:  | 
 | 130 | +        try:  | 
 | 131 | +            return Store.current_driver.find_element(self.by, self.value)  | 
 | 132 | +        except Exception as e:  | 
 | 133 | +            print("scroll to locator using js not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 134 | + | 
 | 135 | +    def clear_and_send_keys(self, string) -> bool:  | 
 | 136 | +        try:  | 
 | 137 | +            var = Store.current_driver.find_element(self.by, self.value).clear  | 
 | 138 | +            Store.current_driver.find_element(self.by, self.value).send_keys(string)  | 
 | 139 | +        except Exception as e:  | 
 | 140 | +            print("Clear and Send keys not worked at \n" + self.by + "\n" + self.value + "\n Exception: \n" + str(e))  | 
 | 141 | +            return False  | 
 | 142 | +        else:  | 
 | 143 | +            return True  | 
0 commit comments