@@ -711,6 +711,33 @@ def maximize_window(self):
711
711
self .driver .maximize_window ()
712
712
self .__demo_mode_pause_if_active ()
713
713
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
+
714
741
def activate_jquery (self ):
715
742
""" If "jQuery is not defined", use this method to activate it for use.
716
743
This happens because jQuery is not always defined on web sites. """
@@ -722,11 +749,8 @@ def activate_jquery(self):
722
749
except Exception :
723
750
# jQuery is not currently defined. Let's proceed by defining it.
724
751
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 )
730
754
for x in range (int (settings .MINI_TIMEOUT * 10.0 )):
731
755
# jQuery needs a small amount of time to activate.
732
756
try :
@@ -740,7 +764,7 @@ def activate_jquery(self):
740
764
'''of the website's Content Security Policy '''
741
765
'''directive. ''' % self .driver .current_url )
742
766
743
- def activate_bootstrap (self ):
767
+ def __activate_bootstrap (self ):
744
768
""" Allows you to use Bootstrap Tours with SeleniumBase
745
769
http://bootstraptour.com/
746
770
(Currently, SeleniumBase methods only use Shepherd Tours.)
@@ -751,29 +775,15 @@ def activate_bootstrap(self):
751
775
bootstrap_tour_js = ("https://cdnjs.cloudflare.com/ajax/libs"
752
776
"/bootstrap-tour/0.11.0/js"
753
777
"/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
768
778
769
779
verify_script = ("""// Instance the tour
770
780
var tour = new Tour({
771
781
});""" )
772
782
773
783
for x in range (4 ):
774
784
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 )
777
787
time .sleep (0.1 )
778
788
779
789
for x in range (int (settings .MINI_TIMEOUT * 2.0 )):
@@ -790,7 +800,7 @@ def activate_bootstrap(self):
790
800
'''of the website's Content Security Policy '''
791
801
'''directive. ''' % self .driver .current_url )
792
802
793
- def is_bootstrap_activated (self ):
803
+ def __is_bootstrap_activated (self ):
794
804
verify_script = ("""// Instance the tour
795
805
var tour = new Tour({
796
806
});""" )
@@ -800,7 +810,7 @@ def is_bootstrap_activated(self):
800
810
except Exception :
801
811
return False
802
812
803
- def activate_shepherd (self ):
813
+ def __activate_shepherd (self ):
804
814
""" Allows you to use Shepherd Tours with SeleniumBase
805
815
http://github.hubspot.com/shepherd/docs/welcome/
806
816
"""
@@ -830,26 +840,6 @@ def activate_shepherd(self):
830
840
spinner_css = ("https://cdnjs.cloudflare.com/ajax/libs"
831
841
"/messenger/1.5.0/css/messenger-spinner.css" )
832
842
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
-
853
843
backdrop_style = (
854
844
'''
855
845
body.shepherd-active .shepherd-target.shepherd-enabled {
@@ -884,49 +874,37 @@ def activate_shepherd(self):
884
874
}
885
875
''' )
886
876
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
-
900
877
sh_style = ("""let test_tour = new Shepherd.Tour({
901
878
defaults: {
902
879
classes: 'shepherd-theme-dark',
903
880
scrollTo: true
904
881
}
905
882
});""" )
906
883
907
- self .activate_bootstrap ()
884
+ self .__activate_bootstrap ()
908
885
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 )
921
898
time .sleep (0.01 )
922
- self .execute_script (backdrop_style )
899
+ self .add_css_style (backdrop_style )
923
900
time .sleep (0.1 )
924
901
925
902
for x in range (int (settings .MINI_TIMEOUT * 2.0 )):
926
903
# Shepherd needs a small amount of time to load & activate.
927
904
try :
928
905
self .execute_script (sh_style )
929
906
self .wait_for_ready_state_complete ()
907
+ self .execute_script (sh_style ) # Need it twice for ordering
930
908
time .sleep (0.05 )
931
909
return
932
910
except Exception :
@@ -937,7 +915,7 @@ def activate_shepherd(self):
937
915
'''of the website's Content Security Policy '''
938
916
'''directive. ''' % self .driver .current_url )
939
917
940
- def is_shepherd_activated (self ):
918
+ def __is_shepherd_activated (self ):
941
919
sh_style = ("""let test_tour = new Shepherd.Tour({
942
920
defaults: {
943
921
classes: 'shepherd-theme-dark',
@@ -1071,8 +1049,8 @@ def play_tour(self, name=None):
1071
1049
instructions += tour_step
1072
1050
instructions += "tour.start();"
1073
1051
1074
- if not self .is_shepherd_activated ():
1075
- self .activate_shepherd ()
1052
+ if not self .__is_shepherd_activated ():
1053
+ self .__activate_shepherd ()
1076
1054
1077
1055
if len (self ._tour_steps [name ]) > 1 :
1078
1056
try :
@@ -1183,60 +1161,33 @@ def activate_messenger(self):
1183
1161
msgr_theme_ice_css = ("https://cdnjs.cloudflare.com/ajax/libs"
1184
1162
"/messenger/1.5.0/css/messenger-theme-ice.css" )
1185
1163
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);''' )
1198
1164
msg_style = ("Messenger.options = {'maxMessages': 8, "
1199
1165
"extraClasses: 'messenger-fixed "
1200
1166
"messenger-on-bottom messenger-on-right', "
1201
1167
"theme: 'future'}" )
1202
1168
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 )
1235
1185
1236
1186
for x in range (int (settings .MINI_TIMEOUT * 10.0 )):
1237
1187
# Messenger needs a small amount of time to load & activate.
1238
1188
try :
1239
1189
self .execute_script (msg_style )
1190
+ self .wait_for_ready_state_complete ()
1240
1191
return
1241
1192
except Exception :
1242
1193
time .sleep (0.1 )
0 commit comments