Skip to content

Commit a7bdbe0

Browse files
committed
Handle ElementNotInteractableException
1 parent a7f8e28 commit a7bdbe0

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class MyTestClass(BaseCase):
4545
from seleniumbase.fixtures import page_utils
4646
from seleniumbase.fixtures import xpath_to_css
4747
from selenium.common.exceptions import (StaleElementReferenceException,
48+
ElementNotInteractableException,
4849
TimeoutException,
4950
WebDriverException)
5051
from selenium.webdriver.remote.webdriver import WebDriver
@@ -96,7 +97,8 @@ def click(self, selector, by=By.CSS_SELECTOR,
9697
pre_action_url = self.driver.current_url
9798
try:
9899
element.click()
99-
except StaleElementReferenceException:
100+
except (StaleElementReferenceException,
101+
ElementNotInteractableException):
100102
self.wait_for_ready_state_complete()
101103
time.sleep(0.05)
102104
element = page_actions.wait_for_element_visible(
@@ -127,7 +129,8 @@ def double_click(self, selector, by=By.CSS_SELECTOR,
127129
actions.move_to_element(element)
128130
actions.double_click(element)
129131
actions.perform()
130-
except StaleElementReferenceException:
132+
except (StaleElementReferenceException,
133+
ElementNotInteractableException):
131134
self.wait_for_ready_state_complete()
132135
time.sleep(0.05)
133136
element = page_actions.wait_for_element_visible(
@@ -191,7 +194,8 @@ def click_link_text(self, link_text, timeout=settings.SMALL_TIMEOUT):
191194
pre_action_url = self.driver.current_url
192195
try:
193196
element.click()
194-
except StaleElementReferenceException:
197+
except (StaleElementReferenceException,
198+
ElementNotInteractableException):
195199
self.wait_for_ready_state_complete()
196200
time.sleep(0.05)
197201
element = self.wait_for_link_text_visible(
@@ -247,7 +251,8 @@ def click_partial_link_text(self, partial_link_text,
247251
pre_action_url = self.driver.current_url
248252
try:
249253
element.click()
250-
except StaleElementReferenceException:
254+
except (StaleElementReferenceException,
255+
ElementNotInteractableException):
251256
self.wait_for_ready_state_complete()
252257
time.sleep(0.05)
253258
element = self.wait_for_partial_link_text(
@@ -273,7 +278,8 @@ def get_text(self, selector, by=By.CSS_SELECTOR,
273278
self.driver, selector, by, timeout)
274279
try:
275280
element_text = element.text
276-
except StaleElementReferenceException:
281+
except (StaleElementReferenceException,
282+
ElementNotInteractableException):
277283
self.wait_for_ready_state_complete()
278284
time.sleep(0.06)
279285
element = page_actions.wait_for_element_visible(
@@ -293,7 +299,8 @@ def get_attribute(self, selector, attribute, by=By.CSS_SELECTOR,
293299
self.driver, selector, by, timeout)
294300
try:
295301
attribute_value = element.get_attribute(attribute)
296-
except StaleElementReferenceException:
302+
except (StaleElementReferenceException,
303+
ElementNotInteractableException):
297304
self.wait_for_ready_state_complete()
298305
time.sleep(0.06)
299306
element = page_actions.wait_for_element_present(
@@ -354,7 +361,8 @@ def add_text(self, selector, new_value, by=By.CSS_SELECTOR,
354361
element.send_keys(Keys.RETURN)
355362
if settings.WAIT_FOR_RSC_ON_PAGE_LOADS:
356363
self.wait_for_ready_state_complete()
357-
except StaleElementReferenceException:
364+
except (StaleElementReferenceException,
365+
ElementNotInteractableException):
358366
self.wait_for_ready_state_complete()
359367
time.sleep(0.06)
360368
element = self.wait_for_element_visible(
@@ -403,7 +411,8 @@ def update_text_value(self, selector, new_value, by=By.CSS_SELECTOR,
403411
self._scroll_to_element(element)
404412
try:
405413
element.clear()
406-
except StaleElementReferenceException:
414+
except (StaleElementReferenceException,
415+
ElementNotInteractableException):
407416
self.wait_for_ready_state_complete()
408417
time.sleep(0.06)
409418
element = self.wait_for_element_visible(
@@ -420,7 +429,8 @@ def update_text_value(self, selector, new_value, by=By.CSS_SELECTOR,
420429
element.send_keys(Keys.RETURN)
421430
if settings.WAIT_FOR_RSC_ON_PAGE_LOADS:
422431
self.wait_for_ready_state_complete()
423-
except StaleElementReferenceException:
432+
except (StaleElementReferenceException,
433+
ElementNotInteractableException):
424434
self.wait_for_ready_state_complete()
425435
time.sleep(0.06)
426436
element = self.wait_for_element_visible(
@@ -621,7 +631,8 @@ def scroll_to(self, selector, by=By.CSS_SELECTOR,
621631
selector, by=by, timeout=timeout)
622632
try:
623633
self._scroll_to_element(element)
624-
except StaleElementReferenceException:
634+
except (StaleElementReferenceException,
635+
ElementNotInteractableException):
625636
self.wait_for_ready_state_complete()
626637
time.sleep(0.05)
627638
element = self.wait_for_element_visible(
@@ -1263,7 +1274,8 @@ def _pick_select_option(self, dropdown_selector, option,
12631274
Select(element).select_by_value(option)
12641275
else:
12651276
Select(element).select_by_visible_text(option)
1266-
except StaleElementReferenceException:
1277+
except (StaleElementReferenceException,
1278+
ElementNotInteractableException):
12671279
self.wait_for_ready_state_complete()
12681280
time.sleep(0.05)
12691281
element = self.find_element(

0 commit comments

Comments
 (0)