Skip to content

Commit 4490427

Browse files
committed
Clicks that open new windows will only switch if not blank
1 parent fa15dcc commit 4490427

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ def click(
328328
)
329329
)
330330
):
331-
self.switch_to_newest_window()
331+
self.__switch_to_newest_window_if_not_blank()
332332
if settings.WAIT_FOR_RSC_ON_CLICKS:
333333
self.wait_for_ready_state_complete()
334334
if self.demo_mode:
@@ -1038,7 +1038,7 @@ def click_link_text(self, link_text, timeout=None):
10381038
)
10391039
)
10401040
):
1041-
self.switch_to_newest_window()
1041+
self.__switch_to_newest_window_if_not_blank()
10421042
if settings.WAIT_FOR_RSC_ON_CLICKS:
10431043
self.wait_for_ready_state_complete()
10441044
if self.demo_mode:
@@ -1170,7 +1170,7 @@ def click_partial_link_text(self, partial_link_text, timeout=None):
11701170
)
11711171
)
11721172
):
1173-
self.switch_to_newest_window()
1173+
self.__switch_to_newest_window_if_not_blank()
11741174
if settings.WAIT_FOR_RSC_ON_CLICKS:
11751175
self.wait_for_ready_state_complete()
11761176
if self.demo_mode:
@@ -1517,7 +1517,7 @@ def click_visible_elements(
15171517
)
15181518
)
15191519
):
1520-
self.switch_to_newest_window()
1520+
self.__switch_to_newest_window_if_not_blank()
15211521
return # Probably on new page / Elements are all stale
15221522
latest_window_count = len(self.driver.window_handles)
15231523
if (
@@ -1530,7 +1530,7 @@ def click_visible_elements(
15301530
)
15311531
)
15321532
):
1533-
self.switch_to_newest_window()
1533+
self.__switch_to_newest_window_if_not_blank()
15341534

15351535
def click_nth_visible_element(
15361536
self, selector, number, by=By.CSS_SELECTOR, timeout=None
@@ -1587,7 +1587,7 @@ def click_nth_visible_element(
15871587
)
15881588
)
15891589
):
1590-
self.switch_to_newest_window()
1590+
self.__switch_to_newest_window_if_not_blank()
15911591

15921592
def click_if_visible(self, selector, by=By.CSS_SELECTOR):
15931593
"""If the page selector exists and is visible, clicks on the element.
@@ -1613,7 +1613,7 @@ def click_active_element(self):
16131613
)
16141614
)
16151615
):
1616-
self.switch_to_newest_window()
1616+
self.__switch_to_newest_window_if_not_blank()
16171617
if settings.WAIT_FOR_RSC_ON_CLICKS:
16181618
self.wait_for_ready_state_complete()
16191619
if self.demo_mode:
@@ -1892,7 +1892,7 @@ def hover_and_click(
18921892
)
18931893
)
18941894
):
1895-
self.switch_to_newest_window()
1895+
self.__switch_to_newest_window_if_not_blank()
18961896
if self.demo_mode:
18971897
if self.driver.current_url != pre_action_url:
18981898
self.__demo_mode_pause_if_active()
@@ -1972,7 +1972,7 @@ def hover_and_double_click(
19721972
)
19731973
)
19741974
):
1975-
self.switch_to_newest_window()
1975+
self.__switch_to_newest_window_if_not_blank()
19761976
if self.demo_mode:
19771977
if self.driver.current_url != pre_action_url:
19781978
self.__demo_mode_pause_if_active()
@@ -2114,7 +2114,7 @@ def __select_option(
21142114
)
21152115
)
21162116
):
2117-
self.switch_to_newest_window()
2117+
self.__switch_to_newest_window_if_not_blank()
21182118
if settings.WAIT_FOR_RSC_ON_CLICKS:
21192119
self.wait_for_ready_state_complete()
21202120
if self.demo_mode:
@@ -2603,6 +2603,15 @@ def switch_to_window(self, window, timeout=None):
26032603
def switch_to_default_window(self):
26042604
self.switch_to_window(0)
26052605

2606+
def __switch_to_newest_window_if_not_blank(self):
2607+
current_window = self.driver.current_window_handle
2608+
try:
2609+
self.switch_to_window(len(self.driver.window_handles) - 1)
2610+
if self.get_current_url() == "about:blank":
2611+
self.switch_to_window(current_window)
2612+
except Exception:
2613+
self.switch_to_window(current_window)
2614+
26062615
def switch_to_newest_window(self):
26072616
self.switch_to_window(len(self.driver.window_handles) - 1)
26082617

@@ -4042,7 +4051,7 @@ def js_click(
40424051
)
40434052
)
40444053
):
4045-
self.switch_to_newest_window()
4054+
self.__switch_to_newest_window_if_not_blank()
40464055
self.wait_for_ready_state_complete()
40474056
self.__demo_mode_pause_if_active()
40484057

0 commit comments

Comments
 (0)