Skip to content

Commit

Permalink
Merge pull request #1383 from 98llm/develop
Browse files Browse the repository at this point in the history
ClickLabel hotfix
  • Loading branch information
renanllisboa authored Jan 9, 2024
2 parents c71cda9 + 0980d22 commit 9328001
Showing 1 changed file with 27 additions and 5 deletions.
32 changes: 27 additions & 5 deletions tir/technologies/webapp_internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -8490,7 +8490,7 @@ def ClickCheckBox(self, label_box_name, position=1, double_click=False):
if not success:
self.log_error("Checkbox index is invalid.")

def ClickLabel(self, label_name):
def ClickLabel(self, label_name, position=0):
"""
Clicks on a Label on the screen.
Expand All @@ -8504,6 +8504,8 @@ def ClickLabel(self, label_name):
"""
bs_label = ''
label = ''
filtered_labels = []
self.wait_blocker()
self.wait_element(label_name)
logger().info(f"Clicking on {label_name}")
endtime = time.time() + self.config.time_out
Expand All @@ -8513,21 +8515,41 @@ def ClickLabel(self, label_name):
self.log_error("Couldn't locate container.")

if self.webapp_shadowroot():
labels = container.select("wa-text-view, wa-checkbox")
filtered_labels = next(iter(list(filter(lambda x: x.get('caption') and label_name.lower() == x.get('caption').lower(), labels))),None)

labels = container.select("wa-text-view, wa-checkbox, .dict-tradmenu")
for element in labels:
if "class" in element.attrs and 'dict-tradmenu' in element['class']:
radio_labels = self.driver.execute_script(f"return arguments[0].shadowRoot.querySelectorAll('label')",
self.soup_to_selenium(element))
filtered_radio = list(
filter(lambda x: label_name.lower().strip() == x.text.lower().strip(),
radio_labels))
if filtered_radio:
[filtered_labels.append(i) for i in filtered_radio]

elif element.get('caption') and label_name.lower() == element.get('caption').lower():
filtered_labels.append(element)

if filtered_labels:
label = self.driver.execute_script(f"return arguments[0].shadowRoot.querySelector('label')", self.soup_to_selenium(filtered_labels))
if len(filtered_labels) > position:
label = filtered_labels[position]

if type(label) == Tag:
label = self.driver.execute_script(f"return arguments[0].shadowRoot.querySelector('label')", self.soup_to_selenium(label))
else:
label = next(iter(self.web_scrap(term=label_name)))

if position > len(filtered_labels):
return self.log_error(f"Element position not found")

else:
labels = container.select("label")
filtered_labels = list(filter(lambda x: label_name.lower() in x.text.lower(), labels))
filtered_labels = list(filter(lambda x: EC.element_to_be_clickable((By.XPATH, xpath_soup(x))), filtered_labels))
label = next(iter(filtered_labels), None)

if not label:
self.log_error("Couldn't find any labels.")
return self.log_error("Couldn't find any labels.")

if type(label) == Tag:
bs_label = self.soup_to_selenium(label)
Expand Down

0 comments on commit 9328001

Please sign in to comment.