Skip to content

Commit 50f26aa

Browse files
committed
Improve Safari automation and allow Safari "data:" URLs
1 parent 518d44c commit 50f26aa

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,12 @@ def open(self, url):
113113
if url.startswith("://"):
114114
# Convert URLs such as "://google.com" into "https://google.com"
115115
url = "https" + url
116-
self.driver.get(url)
116+
if self.browser == "safari" and url.startswith("data:"):
117+
url = re.escape(url)
118+
url = self.__escape_quotes_if_needed(url)
119+
self.execute_script("window.location.href='%s';" % url)
120+
else:
121+
self.driver.get(url)
117122
if settings.WAIT_FOR_RSC_ON_PAGE_LOADS:
118123
self.wait_for_ready_state_complete()
119124
self.__demo_mode_pause_if_active()
@@ -241,15 +246,15 @@ def double_click(self, selector, by=By.CSS_SELECTOR, timeout=None):
241246
self.__demo_mode_highlight_if_active(original_selector, original_by)
242247
if not self.demo_mode and not self.slow_mode:
243248
self.__scroll_to_element(element, selector, by)
249+
self.wait_for_ready_state_complete()
250+
# Find the element one more time in case scrolling hid it
251+
element = page_actions.wait_for_element_visible(
252+
self.driver, selector, by, timeout=timeout)
244253
pre_action_url = self.driver.current_url
245254
try:
246-
actions = ActionChains(self.driver)
247-
actions.double_click(element).perform()
248-
except (StaleElementReferenceException, ENI_Exception):
249-
self.wait_for_ready_state_complete()
250-
time.sleep(0.16)
251-
element = page_actions.wait_for_element_visible(
252-
self.driver, selector, by, timeout=timeout)
255+
if self.browser == "safari":
256+
# Jump to the "except" block where the other script should work
257+
raise Exception("This Exception will be caught.")
253258
actions = ActionChains(self.driver)
254259
actions.double_click(element).perform()
255260
except Exception:
@@ -549,24 +554,17 @@ def get_locale_code(self):
549554
def go_back(self):
550555
self.__check_scope()
551556
self.__last_page_load_url = None
552-
if self.browser != "safari":
553-
self.driver.back()
554-
else:
555-
self.sleep(0.05)
556-
self.execute_script("window.location=document.referrer;")
557-
self.sleep(0.05)
557+
self.driver.back()
558+
if self.browser == "safari":
559+
self.wait_for_ready_state_complete()
560+
self.driver.refresh()
558561
self.wait_for_ready_state_complete()
559562
self.__demo_mode_pause_if_active()
560563

561564
def go_forward(self):
562565
self.__check_scope()
563566
self.__last_page_load_url = None
564-
if self.browser != "safari":
565-
self.driver.forward()
566-
else:
567-
self.sleep(0.05)
568-
self.execute_script("window.history.forward();")
569-
self.sleep(0.05)
567+
self.driver.forward()
570568
self.wait_for_ready_state_complete()
571569
self.__demo_mode_pause_if_active()
572570

@@ -6746,7 +6744,7 @@ def setUp(self, masterqa_mode=False):
67466744
self.driver = sb_config.shared_driver
67476745
self._drivers_list = [sb_config.shared_driver]
67486746
url = self.get_current_url()
6749-
if len(url) > 3:
6747+
if url is not None:
67506748
has_url = True
67516749
if self._crumbs:
67526750
self.driver.delete_all_cookies()

0 commit comments

Comments
 (0)