@@ -328,7 +328,7 @@ def click(
328
328
)
329
329
)
330
330
):
331
- self .switch_to_newest_window ()
331
+ self .__switch_to_newest_window_if_not_blank ()
332
332
if settings .WAIT_FOR_RSC_ON_CLICKS :
333
333
self .wait_for_ready_state_complete ()
334
334
if self .demo_mode :
@@ -1038,7 +1038,7 @@ def click_link_text(self, link_text, timeout=None):
1038
1038
)
1039
1039
)
1040
1040
):
1041
- self .switch_to_newest_window ()
1041
+ self .__switch_to_newest_window_if_not_blank ()
1042
1042
if settings .WAIT_FOR_RSC_ON_CLICKS :
1043
1043
self .wait_for_ready_state_complete ()
1044
1044
if self .demo_mode :
@@ -1170,7 +1170,7 @@ def click_partial_link_text(self, partial_link_text, timeout=None):
1170
1170
)
1171
1171
)
1172
1172
):
1173
- self .switch_to_newest_window ()
1173
+ self .__switch_to_newest_window_if_not_blank ()
1174
1174
if settings .WAIT_FOR_RSC_ON_CLICKS :
1175
1175
self .wait_for_ready_state_complete ()
1176
1176
if self .demo_mode :
@@ -1517,7 +1517,7 @@ def click_visible_elements(
1517
1517
)
1518
1518
)
1519
1519
):
1520
- self .switch_to_newest_window ()
1520
+ self .__switch_to_newest_window_if_not_blank ()
1521
1521
return # Probably on new page / Elements are all stale
1522
1522
latest_window_count = len (self .driver .window_handles )
1523
1523
if (
@@ -1530,7 +1530,7 @@ def click_visible_elements(
1530
1530
)
1531
1531
)
1532
1532
):
1533
- self .switch_to_newest_window ()
1533
+ self .__switch_to_newest_window_if_not_blank ()
1534
1534
1535
1535
def click_nth_visible_element (
1536
1536
self , selector , number , by = By .CSS_SELECTOR , timeout = None
@@ -1587,7 +1587,7 @@ def click_nth_visible_element(
1587
1587
)
1588
1588
)
1589
1589
):
1590
- self .switch_to_newest_window ()
1590
+ self .__switch_to_newest_window_if_not_blank ()
1591
1591
1592
1592
def click_if_visible (self , selector , by = By .CSS_SELECTOR ):
1593
1593
"""If the page selector exists and is visible, clicks on the element.
@@ -1613,7 +1613,7 @@ def click_active_element(self):
1613
1613
)
1614
1614
)
1615
1615
):
1616
- self .switch_to_newest_window ()
1616
+ self .__switch_to_newest_window_if_not_blank ()
1617
1617
if settings .WAIT_FOR_RSC_ON_CLICKS :
1618
1618
self .wait_for_ready_state_complete ()
1619
1619
if self .demo_mode :
@@ -1892,7 +1892,7 @@ def hover_and_click(
1892
1892
)
1893
1893
)
1894
1894
):
1895
- self .switch_to_newest_window ()
1895
+ self .__switch_to_newest_window_if_not_blank ()
1896
1896
if self .demo_mode :
1897
1897
if self .driver .current_url != pre_action_url :
1898
1898
self .__demo_mode_pause_if_active ()
@@ -1972,7 +1972,7 @@ def hover_and_double_click(
1972
1972
)
1973
1973
)
1974
1974
):
1975
- self .switch_to_newest_window ()
1975
+ self .__switch_to_newest_window_if_not_blank ()
1976
1976
if self .demo_mode :
1977
1977
if self .driver .current_url != pre_action_url :
1978
1978
self .__demo_mode_pause_if_active ()
@@ -2114,7 +2114,7 @@ def __select_option(
2114
2114
)
2115
2115
)
2116
2116
):
2117
- self .switch_to_newest_window ()
2117
+ self .__switch_to_newest_window_if_not_blank ()
2118
2118
if settings .WAIT_FOR_RSC_ON_CLICKS :
2119
2119
self .wait_for_ready_state_complete ()
2120
2120
if self .demo_mode :
@@ -2603,6 +2603,15 @@ def switch_to_window(self, window, timeout=None):
2603
2603
def switch_to_default_window (self ):
2604
2604
self .switch_to_window (0 )
2605
2605
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
+
2606
2615
def switch_to_newest_window (self ):
2607
2616
self .switch_to_window (len (self .driver .window_handles ) - 1 )
2608
2617
@@ -4042,7 +4051,7 @@ def js_click(
4042
4051
)
4043
4052
)
4044
4053
):
4045
- self .switch_to_newest_window ()
4054
+ self .__switch_to_newest_window_if_not_blank ()
4046
4055
self .wait_for_ready_state_complete ()
4047
4056
self .__demo_mode_pause_if_active ()
4048
4057
0 commit comments