Skip to content

Commit a6c34e4

Browse files
committed
Improve reliability of "self.click_nth_visible_element()"
1 parent 8a81f9e commit a6c34e4

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,6 +1424,7 @@ def click_nth_visible_element(
14241424
if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
14251425
timeout = self.__get_new_timeout(timeout)
14261426
selector, by = self.__recalculate_selector(selector, by)
1427+
self.wait_for_ready_state_complete()
14271428
self.wait_for_element_present(selector, by=by, timeout=timeout)
14281429
elements = self.find_visible_elements(selector, by=by)
14291430
if len(elements) < number:
@@ -1435,14 +1436,23 @@ def click_nth_visible_element(
14351436
if number < 0:
14361437
number = 0
14371438
element = elements[number]
1438-
self.wait_for_ready_state_complete()
14391439
try:
14401440
self.__scroll_to_element(element)
14411441
element.click()
14421442
except (StaleElementReferenceException, ENI_Exception):
1443-
self.wait_for_ready_state_complete()
14441443
time.sleep(0.12)
1445-
self.__scroll_to_element(element)
1444+
self.wait_for_ready_state_complete()
1445+
self.wait_for_element_present(selector, by=by, timeout=timeout)
1446+
elements = self.find_visible_elements(selector, by=by)
1447+
if len(elements) < number:
1448+
raise Exception(
1449+
"Not enough matching {%s} elements of type {%s} to "
1450+
"click number %s!" % (selector, by, number)
1451+
)
1452+
number = number - 1
1453+
if number < 0:
1454+
number = 0
1455+
element = elements[number]
14461456
element.click()
14471457

14481458
def click_if_visible(self, selector, by=By.CSS_SELECTOR):

0 commit comments

Comments
 (0)