@@ -19,6 +19,10 @@ class SeleniumBrowser(Plugin):
19
19
"""
20
20
This plugin adds the following command-line options to nosetests:
21
21
--browser=BROWSER (The web browser to use. Default: "chrome".)
22
+ --chrome (Shortcut for "--browser=chrome". On by default.)
23
+ --edge (Shortcut for "--browser=edge".)
24
+ --firefox (Shortcut for "--browser=firefox".)
25
+ --safari (Shortcut for "--browser=safari".)
22
26
--user-data-dir=DIR (Set the Chrome user data directory to use.)
23
27
--protocol=PROTOCOL (The Selenium Grid protocol: http|https.)
24
28
--server=SERVER (The Selenium Grid server/IP used for tests.)
@@ -103,13 +107,46 @@ def options(self, parser, env):
103
107
Example: (--browser=firefox)""" ,
104
108
)
105
109
parser .add_option (
106
- "--browser_version" ,
107
- "--browser-version" ,
108
- action = "store" ,
109
- dest = "browser_version" ,
110
- default = "latest" ,
111
- help = """The browser version to use. Explicitly select
112
- a version number or use "latest".""" ,
110
+ "--chrome" ,
111
+ action = "store_true" ,
112
+ dest = "use_chrome" ,
113
+ default = False ,
114
+ help = """Shortcut for --browser=chrome. On by default.)""" ,
115
+ )
116
+ parser .add_option (
117
+ "--edge" ,
118
+ action = "store_true" ,
119
+ dest = "use_edge" ,
120
+ default = False ,
121
+ help = """Shortcut for --browser=edge.)""" ,
122
+ )
123
+ parser .add_option (
124
+ "--firefox" ,
125
+ action = "store_true" ,
126
+ dest = "use_firefox" ,
127
+ default = False ,
128
+ help = """Shortcut for --browser=firefox.)""" ,
129
+ )
130
+ parser .add_option (
131
+ "--ie" ,
132
+ action = "store_true" ,
133
+ dest = "use_ie" ,
134
+ default = False ,
135
+ help = """Shortcut for --browser=ie.)""" ,
136
+ )
137
+ parser .add_option (
138
+ "--opera" ,
139
+ action = "store_true" ,
140
+ dest = "use_opera" ,
141
+ default = False ,
142
+ help = """Shortcut for --browser=opera.)""" ,
143
+ )
144
+ parser .add_option (
145
+ "--safari" ,
146
+ action = "store_true" ,
147
+ dest = "use_safari" ,
148
+ default = False ,
149
+ help = """Shortcut for --browser=safari.)""" ,
113
150
)
114
151
parser .add_option (
115
152
"--cap_file" ,
@@ -622,7 +659,7 @@ def options(self, parser, env):
622
659
action = "store_true" ,
623
660
dest = "use_auto_ext" ,
624
661
default = False ,
625
- help = """Using this enables Chrome's Automation Extension .
662
+ help = """(DEPRECATED) - Enable the automation extension .
626
663
It's not required, but some commands & advanced
627
664
features may need it.""" ,
628
665
)
@@ -835,8 +872,88 @@ def configure(self, options, conf):
835
872
proxy_helper .remove_proxy_zip_if_present ()
836
873
837
874
def beforeTest (self , test ):
838
- sb_config ._context_of_runner = False # Context Manager Compatibility
839
875
browser = self .options .browser
876
+ test .test .browser = browser
877
+ test .test .headless = None
878
+ test .test .headless2 = None
879
+ # As a shortcut, you can use "--edge" instead of "--browser=edge", etc,
880
+ # but you can only specify one default browser. (Default: chrome)
881
+ sb_config ._browser_shortcut = None
882
+ sys_argv = sys .argv
883
+ browser_changes = 0
884
+ browser_set = None
885
+ browser_text = None
886
+ browser_list = []
887
+ if "--browser=chrome" in sys_argv or "--browser chrome" in sys_argv :
888
+ browser_changes += 1
889
+ browser_set = "chrome"
890
+ browser_list .append ("--browser=chrome" )
891
+ if "--browser=edge" in sys_argv or "--browser edge" in sys_argv :
892
+ browser_changes += 1
893
+ browser_set = "edge"
894
+ browser_list .append ("--browser=edge" )
895
+ if "--browser=firefox" in sys_argv or "--browser firefox" in sys_argv :
896
+ browser_changes += 1
897
+ browser_set = "firefox"
898
+ browser_list .append ("--browser=firefox" )
899
+ if "--browser=opera" in sys_argv or "--browser opera" in sys_argv :
900
+ browser_changes += 1
901
+ browser_set = "opera"
902
+ browser_list .append ("--browser=opera" )
903
+ if "--browser=safari" in sys_argv or "--browser safari" in sys_argv :
904
+ browser_changes += 1
905
+ browser_set = "safari"
906
+ browser_list .append ("--browser=safari" )
907
+ if "--browser=ie" in sys_argv or "--browser ie" in sys_argv :
908
+ browser_changes += 1
909
+ browser_set = "ie"
910
+ browser_list .append ("--browser=ie" )
911
+ if "--browser=remote" in sys_argv or "--browser remote" in sys_argv :
912
+ browser_changes += 1
913
+ browser_set = "remote"
914
+ browser_list .append ("--browser=remote" )
915
+ browser_text = browser_set
916
+ if "--chrome" in sys_argv and not browser_set == "chrome" :
917
+ browser_changes += 1
918
+ browser_text = "chrome"
919
+ sb_config ._browser_shortcut = "chrome"
920
+ browser_list .append ("--chrome" )
921
+ if "--edge" in sys_argv and not browser_set == "edge" :
922
+ browser_changes += 1
923
+ browser_text = "edge"
924
+ sb_config ._browser_shortcut = "edge"
925
+ browser_list .append ("--edge" )
926
+ if "--firefox" in sys_argv and not browser_set == "firefox" :
927
+ browser_changes += 1
928
+ browser_text = "firefox"
929
+ sb_config ._browser_shortcut = "firefox"
930
+ browser_list .append ("--firefox" )
931
+ if "--ie" in sys_argv and not browser_set == "ie" :
932
+ browser_changes += 1
933
+ browser_text = "ie"
934
+ sb_config ._browser_shortcut = "ie"
935
+ browser_list .append ("--ie" )
936
+ if "--opera" in sys_argv and not browser_set == "opera" :
937
+ browser_changes += 1
938
+ browser_text = "opera"
939
+ sb_config ._browser_shortcut = "opera"
940
+ browser_list .append ("--opera" )
941
+ if "--safari" in sys_argv and not browser_set == "safari" :
942
+ browser_changes += 1
943
+ browser_text = "safari"
944
+ sb_config ._browser_shortcut = "safari"
945
+ browser_list .append ("--safari" )
946
+ if browser_changes > 1 :
947
+ message = "\n \n TOO MANY browser types were entered!"
948
+ message += "\n There were %s found:\n > %s" % (
949
+ browser_changes ,
950
+ ", " .join (browser_list ),
951
+ )
952
+ message += "\n ONLY ONE default browser is allowed!"
953
+ message += "\n Select a single browser & try again!\n "
954
+ raise Exception (message )
955
+ if browser_text :
956
+ browser = browser_text
840
957
if self .options .recorder_mode and browser not in ["chrome" , "edge" ]:
841
958
message = (
842
959
"\n \n Recorder Mode ONLY supports Chrome and Edge!"
@@ -876,6 +993,9 @@ def beforeTest(self, test):
876
993
sb_config .is_pytest = False
877
994
sb_config .is_context_manager = False
878
995
test .test .browser = self .options .browser
996
+ if sb_config ._browser_shortcut :
997
+ self .options .browser = sb_config ._browser_shortcut
998
+ test .test .browser = sb_config ._browser_shortcut
879
999
test .test .cap_file = self .options .cap_file
880
1000
test .test .cap_string = self .options .cap_string
881
1001
test .test .headless = self .options .headless
@@ -1045,6 +1165,7 @@ def beforeTest(self, test):
1045
1165
sb_config ._is_timeout_changed = False
1046
1166
sb_config ._SMALL_TIMEOUT = settings .SMALL_TIMEOUT
1047
1167
sb_config ._LARGE_TIMEOUT = settings .LARGE_TIMEOUT
1168
+ sb_config ._context_of_runner = False # Context Manager Compatibility
1048
1169
# The driver will be received later
1049
1170
self .driver = None
1050
1171
test .test .driver = self .driver
0 commit comments