From 9674b36289b8ad6696b54958f8b7b1976ff2ddfd Mon Sep 17 00:00:00 2001 From: LEANDRO L MONTEIRO <60761500+98llm@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:45:52 -0300 Subject: [PATCH 01/12] Update version.py --- tir/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tir/version.py b/tir/version.py index f152bbb8..c2b064ce 100644 --- a/tir/version.py +++ b/tir/version.py @@ -1 +1 @@ -__version__ = '1.20.25' +__version__ = '1.20.26rc1' From 3f89b755902ad2b99080bf37b4c57d640da05a1e Mon Sep 17 00:00:00 2001 From: LEANDRO L MONTEIRO <60761500+98llm@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:46:04 -0300 Subject: [PATCH 02/12] Update install_package.cmd --- scripts/install_package.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_package.cmd b/scripts/install_package.cmd index d5436c3c..bcb2fc78 100644 --- a/scripts/install_package.cmd +++ b/scripts/install_package.cmd @@ -13,5 +13,5 @@ taskkill /f /im chromedriver.exe echo ------------------------- echo Installing project... echo ------------------------- -pip install -U dist/tir_framework-1.20.25.tar.gz +pip install -U dist/tir_framework-1.20.26rc1.tar.gz pause >nul | set/p = Press any key to exit ... From 49e78bbffacee74af719a0951d22ff5492b13aa6 Mon Sep 17 00:00:00 2001 From: 98llm Date: Fri, 11 Oct 2024 17:00:23 -0300 Subject: [PATCH 03/12] fix active element change --- tir/technologies/webapp_internal.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tir/technologies/webapp_internal.py b/tir/technologies/webapp_internal.py index 0329517a..b136784e 100644 --- a/tir/technologies/webapp_internal.py +++ b/tir/technologies/webapp_internal.py @@ -7757,26 +7757,33 @@ def try_send_keys(self, element_function, key, try_counter=1): >>> self.try_send_keys(selenium_input, user_value, try_counter) """ + action_send_keys = None + is_active_element = lambda : self.driver.switch_to_active_element() == element_function() + logger().debug(f"Trying to send keys to element using technique {try_counter}") self.wait_until_to( expected_condition = "visibility_of", element = element_function ) if try_counter == 1: ActionChains(self.driver).send_keys(Keys.HOME).perform() ActionChains(self.driver).key_down(Keys.SHIFT).send_keys(Keys.END).key_up(Keys.SHIFT).perform() - ActionChains(self.driver).move_to_element(element_function()).send_keys_to_element(element_function(), key).perform() + action_send_keys = ActionChains(self.driver).move_to_element(element_function()).send_keys_to_element(element_function(), key) elif try_counter == 2: element_function().send_keys(Keys.HOME) ActionChains(self.driver).key_down(Keys.SHIFT).send_keys(Keys.END).key_up(Keys.SHIFT).perform() - element_function().send_keys(key) + if is_active_element(): + element_function().send_keys(key) elif try_counter == 3: element_function().send_keys(Keys.HOME) ActionChains(self.driver).key_down(Keys.SHIFT).send_keys(Keys.DOWN).key_up(Keys.SHIFT).perform() - ActionChains(self.driver).move_to_element(element_function()).send_keys_to_element(element_function(), key).perform() + action_send_keys = ActionChains(self.driver).move_to_element(element_function()).send_keys_to_element(element_function(), key) else: element_function().send_keys(Keys.HOME) ActionChains(self.driver).key_down(Keys.SHIFT).send_keys(Keys.END).key_up(Keys.SHIFT).perform() - ActionChains(self.driver).move_to_element(element_function()).send_keys(key).perform() - + action_send_keys = ActionChains(self.driver).move_to_element(element_function()).send_keys(key) + + if action_send_keys and is_active_element(): + action_send_keys.perform() + def find_label_element(self, label_text, container= None, position = 1, input_field=True, direction=None): """ [Internal] From a8f44b238dfb7db65ded1801488eacc5d4d71a3a Mon Sep 17 00:00:00 2001 From: renanllisboa Date: Tue, 15 Oct 2024 17:24:06 -0300 Subject: [PATCH 04/12] displayed_label on screen method to fix not displyed folders --- tir/technologies/webapp_internal.py | 56 +++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/tir/technologies/webapp_internal.py b/tir/technologies/webapp_internal.py index 0329517a..9951fffe 100644 --- a/tir/technologies/webapp_internal.py +++ b/tir/technologies/webapp_internal.py @@ -108,6 +108,7 @@ def __init__(self, config_path="", autostart=True): self.test_suite = [] self.current_test_suite = self.log.get_file_name('testsuite') self.restart_tss = False + self.last_wa_tab_view_input_id = None if not Base.driver: Base.driver = self.driver @@ -2756,6 +2757,9 @@ def input_value(self, field, value, ignore_case=True, name_attr=False, position= element = self.get_field(field, name_attr, position, direction=direction) + if self.last_wa_tab_view_input_id != self.current_wa_tab_view_id() and self.check_element_tab_view(element=element): + self.last_wa_tab_view_input_id = self.current_wa_tab_view_id() + if element: input_field = lambda : self.soup_to_selenium(element) self.scroll_to_element(input_field()) @@ -2904,6 +2908,34 @@ def input_value(self, field, value, ignore_case=True, name_attr=False, position= else: self.wait_until_to( expected_condition = "element_to_be_clickable", element = main_element, locator = By.XPATH ) + def check_element_tab_view(self, element): + """ + [Internal] + """ + + element_tab_view = element.find_parent('wa-tab-view') + if element_tab_view: + if len(element_tab_view) == 1: + element_tab_view = next(iter(element_tab_view)) + + if hasattr(element_tab_view, "attrs"): + element_tab_view_id = element_tab_view.attrs['id'] + return element_tab_view_id == self.current_wa_tab_view_id() + + def current_wa_tab_view_id(self): + """ + [Internal] + """ + + selector = "wa-tab-view" + + wa_tab_view = self.get_container_selector(selector=selector) + + if isinstance(wa_tab_view, list) and len(wa_tab_view) == 1: + wa_tab_view = next(iter(wa_tab_view)) + + return wa_tab_view.attrs['id'] if hasattr(wa_tab_view, "attrs") else None + def check_combobox(self, element): """ @@ -4834,6 +4866,9 @@ def ClickFolder(self, folder_name, position): element = "" position -= 1 + if self.current_wa_tab_view_id() == self.last_wa_tab_view_input_id: + self.displayed_label_on_screen(label=folder_name, selector='wa-tab-button') + self.wait_element(term=folder_name, scrap_type=enum.ScrapType.MIXED, optional_term=term, second_term='wa-tab-button') endtime = time.time() + self.config.time_out @@ -4872,6 +4907,27 @@ def ClickFolder(self, folder_name, position): if not element: self.log_error("Couldn't find panel item.") + def displayed_label_on_screen(self, label, selector): + + selectors = self.get_container_selector(selector) + element_is_displayed = False + + filtered_label = self.filter_label_by_selector(label=label, selector=selectors) + + if filtered_label: + element_is_displayed = self.element_is_displayed(filtered_label) + + if not element_is_displayed: + active_element = next(iter(filter(lambda x: 'active' in x.attrs, selector)), None) + element = lambda: self.soup_to_selenium(active_element) + self.scroll_to_element(element=element()) + + def filter_label_by_selector(self, label, selector): + + label = label.lower().strip() + + return next(iter(list(filter(lambda x: x.text.lower().strip() == label or x.attrs.get('caption', '').lower().strip() == label, selector))), None) + def ClickBox(self, fields="", content_list="", select_all=False, grid_number=1, itens=False): """ Clicks on Checkbox elements of a grid. From f3362c18b0a76381495bdcdd42db4a972063e4ce Mon Sep 17 00:00:00 2001 From: renanllisboa Date: Tue, 15 Oct 2024 18:21:08 -0300 Subject: [PATCH 05/12] added get_container_selector() --- tir/technologies/webapp_internal.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tir/technologies/webapp_internal.py b/tir/technologies/webapp_internal.py index 9951fffe..23cfbce9 100644 --- a/tir/technologies/webapp_internal.py +++ b/tir/technologies/webapp_internal.py @@ -11078,4 +11078,10 @@ def set_schedule(self, schedule_status): else: self.Program(self.config.routine) - self.tmenu_screen = None \ No newline at end of file + self.tmenu_screen = None + + def get_container_selector(self, selector): + + container = self.get_current_container() + + return container.select(selector) \ No newline at end of file From 448576344ca41b929570af9db17173ff2cfe424b Mon Sep 17 00:00:00 2001 From: renanllisboa Date: Tue, 15 Oct 2024 18:28:55 -0300 Subject: [PATCH 06/12] change selector object name --- tir/technologies/webapp_internal.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tir/technologies/webapp_internal.py b/tir/technologies/webapp_internal.py index 23cfbce9..503c2269 100644 --- a/tir/technologies/webapp_internal.py +++ b/tir/technologies/webapp_internal.py @@ -4909,16 +4909,16 @@ def ClickFolder(self, folder_name, position): def displayed_label_on_screen(self, label, selector): - selectors = self.get_container_selector(selector) + selector_list = self.get_container_selector(selector) element_is_displayed = False - filtered_label = self.filter_label_by_selector(label=label, selector=selectors) + filtered_label = self.filter_label_by_selector(label=label, selector=selector_list) if filtered_label: element_is_displayed = self.element_is_displayed(filtered_label) if not element_is_displayed: - active_element = next(iter(filter(lambda x: 'active' in x.attrs, selector)), None) + active_element = next(iter(filter(lambda x: 'active' in x.attrs, selector_list)), None) element = lambda: self.soup_to_selenium(active_element) self.scroll_to_element(element=element()) From cf04be8c797f0dd6501860daeb0bcc78fa11367c Mon Sep 17 00:00:00 2001 From: renanllisboa Date: Wed, 16 Oct 2024 15:48:25 -0300 Subject: [PATCH 07/12] avoid literal '>' in click_tree labels --- tir/technologies/webapp_internal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tir/technologies/webapp_internal.py b/tir/technologies/webapp_internal.py index 0329517a..ac313c6d 100644 --- a/tir/technologies/webapp_internal.py +++ b/tir/technologies/webapp_internal.py @@ -8806,7 +8806,7 @@ def click_tree(self, treepath, right_click, position, tree_number): position -= 1 tree_number = tree_number-1 if tree_number > 0 else 0 - labels = list(map(str.strip, treepath.split(">"))) + labels = list(map(str.strip, re.split(r'(?', treepath))) labels = list(filter(None, labels)) for row, label in enumerate(labels): From 39d4f042c4f59d5fde4c96353fb472e8ade3b13f Mon Sep 17 00:00:00 2001 From: LEANDRO L MONTEIRO <60761500+98llm@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:18:28 -0300 Subject: [PATCH 08/12] Update version.py --- tir/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tir/version.py b/tir/version.py index c2b064ce..edfc5419 100644 --- a/tir/version.py +++ b/tir/version.py @@ -1 +1 @@ -__version__ = '1.20.26rc1' +__version__ = '1.20.26rc2' From 8461a0648c7c960ab8e4df72c6dd7498a832c0ca Mon Sep 17 00:00:00 2001 From: LEANDRO L MONTEIRO <60761500+98llm@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:18:36 -0300 Subject: [PATCH 09/12] Update install_package.cmd --- scripts/install_package.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_package.cmd b/scripts/install_package.cmd index bcb2fc78..0477a8b6 100644 --- a/scripts/install_package.cmd +++ b/scripts/install_package.cmd @@ -13,5 +13,5 @@ taskkill /f /im chromedriver.exe echo ------------------------- echo Installing project... echo ------------------------- -pip install -U dist/tir_framework-1.20.26rc1.tar.gz +pip install -U dist/tir_framework-1.20.26rc2.tar.gz pause >nul | set/p = Press any key to exit ... From 3a4f3e7a3b937191ed0362c9ecaa1581c2dcca5c Mon Sep 17 00:00:00 2001 From: 98llm Date: Thu, 17 Oct 2024 15:22:04 -0300 Subject: [PATCH 10/12] fix try send keys active --- tir/technologies/webapp_internal.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/tir/technologies/webapp_internal.py b/tir/technologies/webapp_internal.py index 230f1473..eab36091 100644 --- a/tir/technologies/webapp_internal.py +++ b/tir/technologies/webapp_internal.py @@ -7427,7 +7427,7 @@ def switch_to_active_element(self): Call switch_to_active_element method """ try: - self.driver.switch_to_active_element() + return self.driver.switch_to_active_element() except NoSuchElementException: return None except Exception as e: @@ -7814,7 +7814,7 @@ def try_send_keys(self, element_function, key, try_counter=1): """ action_send_keys = None - is_active_element = lambda : self.driver.switch_to_active_element() == element_function() + is_active_element = lambda : self.is_active_element(element_function()) logger().debug(f"Trying to send keys to element using technique {try_counter}") self.wait_until_to( expected_condition = "visibility_of", element = element_function ) @@ -7840,6 +7840,29 @@ def try_send_keys(self, element_function, key, try_counter=1): if action_send_keys and is_active_element(): action_send_keys.perform() + def is_active_element(self, element): + """ + [Internal] + + Return true if an element is active status + + :param element: Element to analyse + :type element: Selenium object + + :return: A list containing a BeautifulSoup object next to the label + :rtype: List of BeautifulSoup objects + """ + + is_active = self.switch_to_active_element() == element + + if is_active: + return is_active + else : + shadow_input = self.find_shadow_element('input, textarea', self.switch_to_active_element(), get_all=False) + return shadow_input == element + + + def find_label_element(self, label_text, container= None, position = 1, input_field=True, direction=None): """ [Internal] From d899841b7276c8b6e5e769f322c663435318a2de Mon Sep 17 00:00:00 2001 From: LEANDRO L MONTEIRO <60761500+98llm@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:33:14 -0300 Subject: [PATCH 11/12] Update version.py --- tir/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tir/version.py b/tir/version.py index edfc5419..66e636cc 100644 --- a/tir/version.py +++ b/tir/version.py @@ -1 +1 @@ -__version__ = '1.20.26rc2' +__version__ = '1.20.26' From f7e7aea569e29d3bee72b4e2d2378ff3b4442d4e Mon Sep 17 00:00:00 2001 From: LEANDRO L MONTEIRO <60761500+98llm@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:33:24 -0300 Subject: [PATCH 12/12] Update install_package.cmd --- scripts/install_package.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_package.cmd b/scripts/install_package.cmd index 0477a8b6..f0ec2fa5 100644 --- a/scripts/install_package.cmd +++ b/scripts/install_package.cmd @@ -13,5 +13,5 @@ taskkill /f /im chromedriver.exe echo ------------------------- echo Installing project... echo ------------------------- -pip install -U dist/tir_framework-1.20.26rc2.tar.gz +pip install -U dist/tir_framework-1.20.26.tar.gz pause >nul | set/p = Press any key to exit ...