Skip to content

Commit f941070

Browse files
committed
More code refactoring
1 parent d09e64f commit f941070

File tree

1 file changed

+69
-118
lines changed

1 file changed

+69
-118
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 69 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,33 @@ def maximize_window(self):
711711
self.driver.maximize_window()
712712
self.__demo_mode_pause_if_active()
713713

714+
def add_css_link(self, css_link):
715+
add_css_link_script = (
716+
'''var link = document.createElement("link"); '''
717+
'''link.rel = "stylesheet"; '''
718+
'''link.type = "text/css"; '''
719+
'''link.href = "%s"; '''
720+
'''document.getElementsByTagName("head")[0]'''
721+
'''.appendChild(link);''')
722+
self.execute_script(add_css_link_script % css_link)
723+
724+
def add_js_link(self, js_link):
725+
script_to_add_js = (
726+
'''var script = document.createElement("script"); '''
727+
'''script.src = "%s"; '''
728+
'''document.getElementsByTagName("head")[0]'''
729+
'''.appendChild(script);''')
730+
self.execute_script(script_to_add_js % js_link)
731+
732+
def add_css_style(self, css_style):
733+
add_css_style_script = (
734+
'''var h = document.getElementsByTagName('head').item(0);'''
735+
'''var s = document.createElement("style");'''
736+
'''s.type = "text/css";'''
737+
'''s.appendChild(document.createTextNode("%s"));'''
738+
'''h.appendChild(s);''')
739+
self.execute_script(add_css_style_script % re.escape(css_style))
740+
714741
def activate_jquery(self):
715742
""" If "jQuery is not defined", use this method to activate it for use.
716743
This happens because jQuery is not always defined on web sites. """
@@ -722,11 +749,8 @@ def activate_jquery(self):
722749
except Exception:
723750
# jQuery is not currently defined. Let's proceed by defining it.
724751
pass
725-
self.execute_script(
726-
'''var script = document.createElement("script"); '''
727-
'''script.src = "https://code.jquery.com/jquery-3.2.1.min.js"; '''
728-
'''document.getElementsByTagName("head")[0]'''
729-
'''.appendChild(script);''')
752+
jquery_js = "https://code.jquery.com/jquery-3.2.1.min.js"
753+
self.add_js_link(jquery_js)
730754
for x in range(int(settings.MINI_TIMEOUT * 10.0)):
731755
# jQuery needs a small amount of time to activate.
732756
try:
@@ -740,7 +764,7 @@ def activate_jquery(self):
740764
'''of the website's Content Security Policy '''
741765
'''directive. ''' % self.driver.current_url)
742766

743-
def activate_bootstrap(self):
767+
def __activate_bootstrap(self):
744768
""" Allows you to use Bootstrap Tours with SeleniumBase
745769
http://bootstraptour.com/
746770
(Currently, SeleniumBase methods only use Shepherd Tours.)
@@ -751,29 +775,15 @@ def activate_bootstrap(self):
751775
bootstrap_tour_js = ("https://cdnjs.cloudflare.com/ajax/libs"
752776
"/bootstrap-tour/0.11.0/js"
753777
"/bootstrap-tour-standalone.min.js")
754-
add_css_link = (
755-
'''var link = document.createElement("link"); '''
756-
'''link.rel = "stylesheet"; '''
757-
'''link.type = "text/css"; '''
758-
'''link.href = "%s"; '''
759-
'''document.getElementsByTagName("head")[0]'''
760-
'''.appendChild(link);''')
761-
add_js_script = (
762-
'''var script = document.createElement("script"); '''
763-
'''script.src = "%s"; '''
764-
'''document.getElementsByTagName("head")[0]'''
765-
'''.appendChild(script);''')
766-
bootstrap_css_script = add_css_link % bootstrap_tour_css
767-
bootstrap_js_script = add_js_script % bootstrap_tour_js
768778

769779
verify_script = ("""// Instance the tour
770780
var tour = new Tour({
771781
});""")
772782

773783
for x in range(4):
774784
self.activate_jquery()
775-
self.execute_script(bootstrap_css_script)
776-
self.execute_script(bootstrap_js_script)
785+
self.add_css_link(bootstrap_tour_css)
786+
self.add_js_link(bootstrap_tour_js)
777787
time.sleep(0.1)
778788

779789
for x in range(int(settings.MINI_TIMEOUT * 2.0)):
@@ -790,7 +800,7 @@ def activate_bootstrap(self):
790800
'''of the website's Content Security Policy '''
791801
'''directive. ''' % self.driver.current_url)
792802

793-
def is_bootstrap_activated(self):
803+
def __is_bootstrap_activated(self):
794804
verify_script = ("""// Instance the tour
795805
var tour = new Tour({
796806
});""")
@@ -800,7 +810,7 @@ def is_bootstrap_activated(self):
800810
except Exception:
801811
return False
802812

803-
def activate_shepherd(self):
813+
def __activate_shepherd(self):
804814
""" Allows you to use Shepherd Tours with SeleniumBase
805815
http://github.hubspot.com/shepherd/docs/welcome/
806816
"""
@@ -830,26 +840,6 @@ def activate_shepherd(self):
830840
spinner_css = ("https://cdnjs.cloudflare.com/ajax/libs"
831841
"/messenger/1.5.0/css/messenger-spinner.css")
832842

833-
add_css_link = (
834-
'''var link = document.createElement("link"); '''
835-
'''link.rel = "stylesheet"; '''
836-
'''link.type = "text/css"; '''
837-
'''link.href = "%s"; '''
838-
'''document.getElementsByTagName("head")[0]'''
839-
'''.appendChild(link);''')
840-
add_js_script = (
841-
'''var script = document.createElement("script"); '''
842-
'''script.src = "%s"; '''
843-
'''document.getElementsByTagName("head")[0]'''
844-
'''.appendChild(script);''')
845-
846-
add_css_style = (
847-
'''var h = document.getElementsByTagName('head').item(0);'''
848-
'''var s = document.createElement("style");'''
849-
'''s.type = "text/css";'''
850-
'''s.appendChild(document.createTextNode("%s"));'''
851-
'''h.appendChild(s);''')
852-
853843
backdrop_style = (
854844
'''
855845
body.shepherd-active .shepherd-target.shepherd-enabled {
@@ -884,49 +874,37 @@ def activate_shepherd(self):
884874
}
885875
''')
886876

887-
shepherd_css_script = add_css_link % sh_theme_arrows_css
888-
shepherd_css_script_2 = add_css_link % sh_theme_arrows_fix_css
889-
shepherd_css_script_3 = add_css_link % sh_theme_default_css
890-
shepherd_css_script_4 = add_css_link % sh_theme_dark_css
891-
shepherd_css_script_5 = add_css_link % sh_theme_sq_css
892-
shepherd_css_script_6 = add_css_link % sh_theme_sq_dark_css
893-
tether_js_script = add_js_script % tether_js
894-
shepherd_js_script = add_js_script % shepherd_js
895-
underscore_js_script = add_js_script % underscore_js
896-
backbone_js_script = add_js_script % backbone_js
897-
spinner_css_script = add_css_link % spinner_css
898-
backdrop_style = add_css_style % re.escape(backdrop_style)
899-
900877
sh_style = ("""let test_tour = new Shepherd.Tour({
901878
defaults: {
902879
classes: 'shepherd-theme-dark',
903880
scrollTo: true
904881
}
905882
});""")
906883

907-
self.activate_bootstrap()
884+
self.__activate_bootstrap()
908885
for x in range(4):
909-
# self.activate_jquery() # Included with activate_bootstrap()
910-
self.execute_script(spinner_css_script)
911-
self.execute_script(shepherd_css_script)
912-
self.execute_script(shepherd_css_script_2)
913-
self.execute_script(shepherd_css_script_3)
914-
self.execute_script(shepherd_css_script_4)
915-
self.execute_script(shepherd_css_script_5)
916-
self.execute_script(shepherd_css_script_6)
917-
self.execute_script(tether_js_script)
918-
self.execute_script(underscore_js_script)
919-
self.execute_script(backbone_js_script)
920-
self.execute_script(shepherd_js_script)
886+
# self.activate_jquery() # Included with __activate_bootstrap()
887+
self.add_css_link(spinner_css)
888+
self.add_css_link(sh_theme_arrows_css)
889+
self.add_css_link(sh_theme_arrows_fix_css)
890+
self.add_css_link(sh_theme_default_css)
891+
self.add_css_link(sh_theme_dark_css)
892+
self.add_css_link(sh_theme_sq_css)
893+
self.add_css_link(sh_theme_sq_dark_css)
894+
self.add_js_link(tether_js)
895+
self.add_js_link(underscore_js)
896+
self.add_js_link(backbone_js)
897+
self.add_js_link(shepherd_js)
921898
time.sleep(0.01)
922-
self.execute_script(backdrop_style)
899+
self.add_css_style(backdrop_style)
923900
time.sleep(0.1)
924901

925902
for x in range(int(settings.MINI_TIMEOUT * 2.0)):
926903
# Shepherd needs a small amount of time to load & activate.
927904
try:
928905
self.execute_script(sh_style)
929906
self.wait_for_ready_state_complete()
907+
self.execute_script(sh_style) # Need it twice for ordering
930908
time.sleep(0.05)
931909
return
932910
except Exception:
@@ -937,7 +915,7 @@ def activate_shepherd(self):
937915
'''of the website's Content Security Policy '''
938916
'''directive. ''' % self.driver.current_url)
939917

940-
def is_shepherd_activated(self):
918+
def __is_shepherd_activated(self):
941919
sh_style = ("""let test_tour = new Shepherd.Tour({
942920
defaults: {
943921
classes: 'shepherd-theme-dark',
@@ -1071,8 +1049,8 @@ def play_tour(self, name=None):
10711049
instructions += tour_step
10721050
instructions += "tour.start();"
10731051

1074-
if not self.is_shepherd_activated():
1075-
self.activate_shepherd()
1052+
if not self.__is_shepherd_activated():
1053+
self.__activate_shepherd()
10761054

10771055
if len(self._tour_steps[name]) > 1:
10781056
try:
@@ -1183,60 +1161,33 @@ def activate_messenger(self):
11831161
msgr_theme_ice_css = ("https://cdnjs.cloudflare.com/ajax/libs"
11841162
"/messenger/1.5.0/css/messenger-theme-ice.css")
11851163

1186-
add_css_link = (
1187-
'''var link = document.createElement("link"); '''
1188-
'''link.rel = "stylesheet"; '''
1189-
'''link.type = "text/css"; '''
1190-
'''link.href = "%s"; '''
1191-
'''document.getElementsByTagName("head")[0]'''
1192-
'''.appendChild(link);''')
1193-
add_js_script = (
1194-
'''var script = document.createElement("script"); '''
1195-
'''script.src = "%s"; '''
1196-
'''document.getElementsByTagName("head")[0]'''
1197-
'''.appendChild(script);''')
11981164
msg_style = ("Messenger.options = {'maxMessages': 8, "
11991165
"extraClasses: 'messenger-fixed "
12001166
"messenger-on-bottom messenger-on-right', "
12011167
"theme: 'future'}")
12021168

1203-
jquery_script = add_js_script % jquery_js
1204-
messenger_css_script = add_css_link % messenger_css
1205-
messenger_theme_flat_css_script = add_css_link % msgr_theme_flat_css
1206-
messenger_theme_future_css_script = add_css_link % msgr_theme_futur_css
1207-
messenger_theme_block_css_script = add_css_link % msgr_theme_block_css
1208-
messenger_theme_air_css_script = add_css_link % msgr_theme_air_css
1209-
messenger_theme_ice_css_script = add_css_link % msgr_theme_ice_css
1210-
underscore_js_script = add_js_script % underscore_js
1211-
backbone_js_script = add_js_script % backbone_js
1212-
spinner_css_script = add_css_link % spinner_css
1213-
messenger_js_script = add_js_script % messenger_js
1214-
messenger_theme_flat_js_script = add_js_script % msgr_theme_flat_js
1215-
messenger_theme_future_js_script = add_js_script % msg_theme_future_js
1216-
messenger_theme_block_js_script = add_js_script % msgr_theme_block_js
1217-
messenger_theme_air_js_script = add_js_script % msgr_theme_air_js
1218-
messenger_theme_ice_js_script = add_js_script % msgr_theme_ice_js
1219-
self.execute_script(jquery_script)
1220-
self.execute_script(messenger_css_script)
1221-
self.execute_script(messenger_theme_flat_css_script)
1222-
self.execute_script(messenger_theme_future_css_script)
1223-
self.execute_script(messenger_theme_block_css_script)
1224-
self.execute_script(messenger_theme_air_css_script)
1225-
self.execute_script(messenger_theme_ice_css_script)
1226-
self.execute_script(underscore_js_script)
1227-
self.execute_script(backbone_js_script)
1228-
self.execute_script(spinner_css_script)
1229-
self.execute_script(messenger_js_script)
1230-
self.execute_script(messenger_theme_flat_js_script)
1231-
self.execute_script(messenger_theme_future_js_script)
1232-
self.execute_script(messenger_theme_block_js_script)
1233-
self.execute_script(messenger_theme_air_js_script)
1234-
self.execute_script(messenger_theme_ice_js_script)
1169+
self.add_js_link(jquery_js)
1170+
self.add_css_link(messenger_css)
1171+
self.add_css_link(msgr_theme_flat_css)
1172+
self.add_css_link(msgr_theme_futur_css)
1173+
self.add_css_link(msgr_theme_block_css)
1174+
self.add_css_link(msgr_theme_air_css)
1175+
self.add_css_link(msgr_theme_ice_css)
1176+
self.add_js_link(underscore_js)
1177+
self.add_js_link(backbone_js)
1178+
self.add_css_link(spinner_css)
1179+
self.add_js_link(messenger_js)
1180+
self.add_js_link(msgr_theme_flat_js)
1181+
self.add_js_link(msg_theme_future_js)
1182+
self.add_js_link(msgr_theme_block_js)
1183+
self.add_js_link(msgr_theme_air_js)
1184+
self.add_js_link(msgr_theme_ice_js)
12351185

12361186
for x in range(int(settings.MINI_TIMEOUT * 10.0)):
12371187
# Messenger needs a small amount of time to load & activate.
12381188
try:
12391189
self.execute_script(msg_style)
1190+
self.wait_for_ready_state_complete()
12401191
return
12411192
except Exception:
12421193
time.sleep(0.1)

0 commit comments

Comments
 (0)