Skip to content

Commit 31d99c1

Browse files
authored
Merge pull request #1958 from atlassian/issue/dev/ECO-1109_fix-jsm-11-3-0-tests
Fix JSM 11.3.0 tests
2 parents 61f3837 + 21ca4b2 commit 31d99c1

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

app/selenium_ui/base_page.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import time
55

66
from packaging import version
7-
from selenium.common.exceptions import WebDriverException, TimeoutException
7+
from selenium.common.exceptions import WebDriverException, TimeoutException, StaleElementReferenceException
88
from selenium.webdriver.common.action_chains import ActionChains
99
from selenium.webdriver.common.by import By
1010
from selenium.webdriver.support import expected_conditions as ec
@@ -138,7 +138,11 @@ def __wait_until(self, expected_condition, locator, time_out=timeout):
138138
message += (f"Timed out after {time_out} sec waiting for {str(expected_condition)}. \n"
139139
f"Locator: {locator}{str(expected_condition)}")
140140

141-
return WebDriverWait(self.driver, time_out).until(expected_condition, message=message)
141+
try:
142+
return WebDriverWait(self.driver, time_out).until(expected_condition, message=message)
143+
except StaleElementReferenceException:
144+
print(f"Stale element reference detected for {locator}, retrying wait...")
145+
return WebDriverWait(self.driver, time_out).until(expected_condition, message=message)
142146

143147
def dismiss_popup(self, popup_selectors):
144148
for selector_type, selector_value in popup_selectors:

app/selenium_ui/jsm/pages/agent_pages.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88

99
class PopupManager(BasePage):
10-
1110
def dismiss_default_popup(self):
1211
return self.dismiss_popup(PopupLocators.popup_selectors)
1312

@@ -126,37 +125,38 @@ def check_comment_text_is_displayed(self, text, rte_status=None):
126125
self.wait_until_present(ViewCustomerRequestLocators.comment_tinymce_field).send_keys(text)
127126
self.return_to_parent_frame()
128127
if self.get_elements(ViewCustomerRequestLocators.comment_internally_btn):
129-
self.wait_until_present(ViewCustomerRequestLocators.comment_internally_btn).click()
128+
self.wait_until_clickable(ViewCustomerRequestLocators.comment_internally_btn).click()
130129
else:
131-
self.wait_until_present(ViewCustomerRequestLocators.comment_internally_btn_jsm10).click()
130+
self.wait_until_clickable(ViewCustomerRequestLocators.comment_internally_btn_jsm10).click()
132131
elif self.wait_until_present(ViewCustomerRequestLocators.comment_text_field).text != text:
133132
self.wait_until_present(ViewCustomerRequestLocators.comment_text_field).send_keys(text)
134133
if self.get_elements(ViewCustomerRequestLocators.comment_internally_btn):
135-
self.wait_until_present(ViewCustomerRequestLocators.comment_internally_btn).click()
134+
self.wait_until_clickable(ViewCustomerRequestLocators.comment_internally_btn).click()
136135
else:
137-
self.wait_until_present(ViewCustomerRequestLocators.comment_internally_btn_jsm10).click()
136+
self.wait_until_clickable(ViewCustomerRequestLocators.comment_internally_btn_jsm10).click()
138137

139138
def add_request_comment(self, rte_status):
140139
comment_text = f"Add comment from selenium - {self.generate_random_string(30)}"
141140
self.wait_until_visible(ViewCustomerRequestLocators.comment_area)
142-
textarea = self.get_element(ViewCustomerRequestLocators.comment_collapsed_textarea)
143-
self.driver.execute_script("arguments[0].scrollIntoView(true);", textarea)
144-
textarea.click()
141+
self.driver.execute_script("arguments[0].scrollIntoView(true);",
142+
self.wait_until_present(ViewCustomerRequestLocators.comment_collapsed_textarea))
143+
self.wait_until_clickable(ViewCustomerRequestLocators.comment_collapsed_textarea).click()
145144
if self.get_elements(ViewCustomerRequestLocators.comment_internally_btn):
146-
comment_button = self.get_element(ViewCustomerRequestLocators.comment_internally_btn)
145+
comment_button_selector = ViewCustomerRequestLocators.comment_internally_btn
147146
else:
148-
comment_button = self.get_element(ViewCustomerRequestLocators.comment_internally_btn_jsm10)
149-
self.driver.execute_script("arguments[0].scrollIntoView(true);", comment_button)
147+
comment_button_selector = ViewCustomerRequestLocators.comment_internally_btn_jsm10
148+
self.driver.execute_script("arguments[0].scrollIntoView(true);",
149+
self.wait_until_present(comment_button_selector))
150150

151151
if rte_status:
152152
self.wait_until_available_to_switch(ViewCustomerRequestLocators.comment_text_field_RTE)
153153
self.wait_until_present(ViewCustomerRequestLocators.comment_tinymce_field).send_keys(comment_text)
154154
self.return_to_parent_frame()
155-
comment_button.click()
155+
self.wait_until_clickable(comment_button_selector).click()
156156
self.check_comment_text_is_displayed(comment_text, True)
157157
else:
158158
self.wait_until_present(ViewCustomerRequestLocators.comment_text_field).send_keys(comment_text)
159-
comment_button.click()
159+
self.wait_until_clickable(comment_button_selector).click()
160160
self.check_comment_text_is_displayed(comment_text)
161161

162162

app/selenium_ui/jsm/pages/agent_selectors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class InsightViewQueueLocators:
186186

187187
class InsightSearchObjectIql:
188188
search_object_text_field = (By.CSS_SELECTOR, "textarea[name='iql']")
189-
search_iql_button = (By.CLASS_NAME, "rIcon-search")
189+
search_iql_button = (By.CSS_SELECTOR, ".rIcon-search, .rlIqlEditor ~ button")
190190
search_iql_success = (By.XPATH, "//thead/tr[1]")
191191

192192

0 commit comments

Comments
 (0)