seleniumbase 4.31.4__py3-none-any.whl → 4.31.5__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -45,86 +45,71 @@ from seleniumbase.config import settings
45
45
  from seleniumbase.fixtures import constants
46
46
  from seleniumbase.fixtures import shared_utils
47
47
 
48
- if shared_utils.is_windows() and hasattr(colorama, "just_fix_windows_console"):
49
- colorama.just_fix_windows_console()
50
- else:
51
- colorama.init(autoreset=True)
52
-
53
-
54
- def show_usage():
55
- show_basic_usage()
56
- sc = ""
57
- sc += ' Type "sbase help [COMMAND]" for specific info.\n'
58
- sc += ' For all commands, type: "seleniumbase --help".\n'
59
- sc += ' Use "pytest" for running tests.\n'
60
- if "linux" not in sys.platform:
61
- c1 = colorama.Fore.BLUE + colorama.Back.LIGHTCYAN_EX
62
- c2 = colorama.Fore.BLUE + colorama.Back.LIGHTGREEN_EX
63
- c3 = colorama.Fore.BLUE + colorama.Back.LIGHTYELLOW_EX
64
- c4 = colorama.Fore.MAGENTA + colorama.Back.LIGHTYELLOW_EX
65
- cr = colorama.Style.RESET_ALL
66
- sc = sc.replace("seleniumbase", c1 + "selenium" + c2 + "base" + cr)
67
- sc = sc.replace("sbase", c1 + "s" + c2 + "base" + cr)
68
- sc = sc.replace("pytest", c3 + "pytest" + cr)
69
- sc = sc.replace("--help", c4 + "--help" + cr)
70
- sc = sc.replace("help", c4 + "help" + cr)
71
- print(sc)
72
-
73
48
 
74
49
  def show_basic_usage():
75
50
  from seleniumbase.console_scripts import logo_helper
76
51
 
77
52
  seleniumbase_logo = logo_helper.get_seleniumbase_logo()
78
53
  print(seleniumbase_logo)
79
- time.sleep(0.044)
54
+ time.sleep(0.035)
80
55
  print("")
81
- time.sleep(0.033)
56
+ time.sleep(0.031)
82
57
  show_package_location()
83
- time.sleep(0.032)
58
+ time.sleep(0.031)
84
59
  show_version_info()
85
60
  time.sleep(0.031)
86
61
  print("")
87
- time.sleep(0.68) # Enough time to see the logo & version
62
+ time.sleep(0.555) # Enough time to see the logo & version
88
63
  sc = ""
89
- sc += ' * USAGE: "seleniumbase [COMMAND] [PARAMETERS]"\n'
90
- sc += ' * OR: "sbase [COMMAND] [PARAMETERS]"\n'
91
- sc += "\n"
92
- sc += "COMMANDS:\n"
93
- sc += " get / install [DRIVER] [OPTIONS]\n"
94
- sc += " methods (List common Python methods)\n"
95
- sc += " options (List common pytest options)\n"
96
- sc += " behave-options (List common behave options)\n"
97
- sc += " gui / commander [OPTIONAL PATH or TEST FILE]\n"
98
- sc += " behave-gui (SBase Commander for Behave)\n"
99
- sc += " caseplans [OPTIONAL PATH or TEST FILE]\n"
100
- sc += " mkdir [DIRECTORY] [OPTIONS]\n"
101
- sc += " mkfile [FILE.py] [OPTIONS]\n"
102
- sc += " mkrec / codegen [FILE.py] [OPTIONS]\n"
103
- sc += " recorder (Open Recorder Desktop App.)\n"
104
- sc += " record (If args: mkrec. Else: App.)\n"
105
- sc += " mkpres [FILE.py] [LANG]\n"
106
- sc += " mkchart [FILE.py] [LANG]\n"
107
- sc += " print [FILE] [OPTIONS]\n"
108
- sc += " translate [SB_FILE.py] [LANG] [ACTION]\n"
109
- sc += " convert [WEBDRIVER_UNITTEST_FILE.py]\n"
110
- sc += " extract-objects [SB_FILE.py]\n"
111
- sc += " inject-objects [SB_FILE.py] [OPTIONS]\n"
112
- sc += " objectify [SB_FILE.py] [OPTIONS]\n"
113
- sc += " revert-objects [SB_FILE.py] [OPTIONS]\n"
114
- sc += " encrypt / obfuscate\n"
115
- sc += " decrypt / unobfuscate\n"
116
- sc += " proxy (Start a basic proxy server)\n"
117
- sc += " download server (Get Selenium Grid JAR file)\n"
118
- sc += " grid-hub [start|stop] [OPTIONS]\n"
119
- sc += " grid-node [start|stop] --hub=[HOST/IP]\n"
120
- sc += ' * (EXAMPLE: "sbase get chromedriver") *\n'
64
+ sc += "╭──────────────────────────────────────────────────╮\n"
65
+ sc += '│ * USAGE: "seleniumbase [COMMAND] [PARAMETERS]" │\n'
66
+ sc += '│ * OR: "sbase [COMMAND] [PARAMETERS]" │\n'
67
+ sc += "│ │\n"
68
+ sc += " COMMANDS: PARAMETERS / DESCRIPTIONS: │\n"
69
+ sc += "│ get / install [DRIVER_NAME] [OPTIONS] │\n"
70
+ sc += "│ methods (List common Python methods) │\n"
71
+ sc += "options (List common pytest options) │\n"
72
+ sc += "│ behave-options (List common behave options) │\n"
73
+ sc += "gui / commander [OPTIONAL PATH or TEST FILE] │\n"
74
+ sc += "│ behave-gui (SBase Commander for Behave) │\n"
75
+ sc += "│ caseplans [OPTIONAL PATH or TEST FILE] │\n"
76
+ sc += "│ mkdir [DIRECTORY] [OPTIONS] │\n"
77
+ sc += "│ mkfile [FILE.py] [OPTIONS] │\n"
78
+ sc += "│ mkrec / codegen [FILE.py] [OPTIONS] │\n"
79
+ sc += "│ recorder (Open Recorder Desktop App.) │\n"
80
+ sc += "│ record (If args: mkrec. Else: App.) │\n"
81
+ sc += "│ mkpres [FILE.py] [LANG] │\n"
82
+ sc += "│ mkchart [FILE.py] [LANG] │\n"
83
+ sc += "│ print [FILE] [OPTIONS] │\n"
84
+ sc += "│ translate [SB_FILE.py] [LANG] [ACTION] │\n"
85
+ sc += "│ convert [WEBDRIVER_UNITTEST_FILE.py] │\n"
86
+ sc += "│ extract-objects [SB_FILE.py] │\n"
87
+ sc += "│ inject-objects [SB_FILE.py] [OPTIONS] │\n"
88
+ sc += "│ objectify [SB_FILE.py] [OPTIONS] │\n"
89
+ sc += "│ revert-objects [SB_FILE.py] [OPTIONS] │\n"
90
+ sc += "│ encrypt / obfuscate │\n"
91
+ sc += "│ decrypt / unobfuscate │\n"
92
+ sc += "│ proxy (Start a basic proxy server) │\n"
93
+ sc += "│ download server (Get Selenium Grid JAR file) │\n"
94
+ sc += "grid-hub [start|stop] [OPTIONS] │\n"
95
+ sc += "│ grid-node [start|stop] --hub=[HOST/IP] │\n"
96
+ sc += "│ │\n"
97
+ sc += '│ * EXAMPLE => "sbase get chromedriver stable" │\n'
98
+ sc += '│ * For command info => "sbase help [COMMAND]" │\n'
99
+ sc += '│ * For info on all commands => "sbase --help" │\n'
100
+ sc += "╰──────────────────────────────────────────────────╯"
121
101
  sc += ""
122
102
  if "linux" not in sys.platform:
123
103
  c1 = colorama.Fore.BLUE + colorama.Back.LIGHTCYAN_EX
124
104
  c2 = colorama.Fore.BLUE + colorama.Back.LIGHTGREEN_EX
105
+ c3 = colorama.Fore.BLUE + colorama.Back.LIGHTYELLOW_EX
106
+ c4 = colorama.Fore.MAGENTA + colorama.Back.LIGHTYELLOW_EX
125
107
  cr = colorama.Style.RESET_ALL
126
108
  sc = sc.replace("seleniumbase", c1 + "selenium" + c2 + "base" + cr)
127
109
  sc = sc.replace("sbase", c1 + "s" + c2 + "base" + cr)
110
+ sc = sc.replace("[COMMAND]", c3 + "[COMMAND]" + cr)
111
+ sc = sc.replace("--help", c4 + "--help" + cr)
112
+ sc = sc.replace("help", c4 + "help" + cr)
128
113
  print(sc)
129
114
 
130
115
 
@@ -136,33 +121,33 @@ def show_install_usage():
136
121
  print(sc)
137
122
  print("")
138
123
  print(" Usage:")
139
- print(" seleniumbase install [DRIVER_NAME] [OPTIONS]")
140
- print(" OR: seleniumbase get [DRIVER_NAME] [OPTIONS]")
141
- print(" OR: sbase install [DRIVER_NAME] [OPTIONS]")
142
- print(" OR: sbase get [DRIVER_NAME] [OPTIONS]")
143
- print(" (Drivers: chromedriver, geckodriver, edgedriver")
144
- print(" iedriver, uc_driver)")
124
+ print(" seleniumbase install [DRIVER_NAME] [OPTIONS]")
125
+ print(" OR: seleniumbase get [DRIVER_NAME] [OPTIONS]")
126
+ print(" OR: sbase install [DRIVER_NAME] [OPTIONS]")
127
+ print(" OR: sbase get [DRIVER_NAME] [OPTIONS]")
128
+ print(" (Drivers: chromedriver, geckodriver,")
129
+ print(" edgedriver, iedriver, uc_driver)")
145
130
  print(" Options:")
146
- print(" VERSION Specify the version to download.")
147
- print(" Tries to detect the needed version.")
148
- print(" If using chromedriver or edgedriver,")
149
- print(" you can use the major version integer.")
131
+ print(" VERSION Specify the version to download.")
132
+ print(" Tries to detect the needed version.")
133
+ print(" If using chromedriver or edgedriver,")
134
+ print(" you can use the major version integer.")
150
135
  print()
151
- print(" -p OR --path Also copy the driver to /usr/local/bin")
136
+ print(" -p / --path Also copy driver to /usr/local/bin")
152
137
  print(" Examples:")
153
- print(" sbase get chromedriver")
154
- print(" sbase get geckodriver")
155
- print(" sbase get edgedriver")
156
- print(" sbase get chromedriver 114")
157
- print(" sbase get chromedriver 114.0.5735.90")
158
- print(" sbase get chromedriver stable")
159
- print(" sbase get chromedriver beta")
160
- print(" sbase get chromedriver -p")
138
+ print(" sbase get chromedriver")
139
+ print(" sbase get geckodriver")
140
+ print(" sbase get edgedriver")
141
+ print(" sbase get chromedriver 114")
142
+ print(" sbase get chromedriver 114.0.5735.90")
143
+ print(" sbase get chromedriver stable")
144
+ print(" sbase get chromedriver beta")
145
+ print(" sbase get chromedriver -p")
161
146
  print(" Output:")
162
- print(" Downloads the webdriver to seleniumbase/drivers/")
163
- print(" (chromedriver is required for Chrome automation)")
164
- print(" (geckodriver is required for Firefox automation)")
165
- print(" (edgedriver is required for MS__Edge automation)")
147
+ print(" Downloads the webdriver to seleniumbase/drivers/")
148
+ print(" (chromedriver is required for Chrome automation)")
149
+ print(" (geckodriver is required for Firefox automation)")
150
+ print(" (edgedriver is required for MS__Edge automation)")
166
151
  print("")
167
152
 
168
153
 
@@ -174,18 +159,18 @@ def show_commander_usage():
174
159
  print(sc)
175
160
  print("")
176
161
  print(" Usage:")
177
- print(" seleniumbase commander [OPTIONAL PATH or TEST FILE]")
178
- print(" OR: sbase commander [OPTIONAL PATH or TEST FILE]")
179
- print(" OR: seleniumbase gui [OPTIONAL PATH or TEST FILE]")
180
- print(" OR: sbase gui [OPTIONAL PATH or TEST FILE]")
162
+ print(" seleniumbase commander [OPTIONAL PATH or TEST FILE]")
163
+ print(" OR: sbase commander [OPTIONAL PATH or TEST FILE]")
164
+ print(" OR: seleniumbase gui [OPTIONAL PATH or TEST FILE]")
165
+ print(" OR: sbase gui [OPTIONAL PATH or TEST FILE]")
181
166
  print(" Examples:")
182
- print(" sbase gui")
183
- print(" sbase gui -k agent")
184
- print(" sbase gui -m marker2")
185
- print(" sbase gui test_suite.py")
186
- print(" sbase gui offline_examples/")
167
+ print(" sbase gui")
168
+ print(" sbase gui -k agent")
169
+ print(" sbase gui -m marker2")
170
+ print(" sbase gui test_suite.py")
171
+ print(" sbase gui offline_examples/")
187
172
  print(" Output:")
188
- print(" Launches SeleniumBase Commander | GUI for pytest.")
173
+ print(" Launches SeleniumBase Commander | GUI for pytest.")
189
174
  print("")
190
175
 
191
176
 
@@ -197,16 +182,16 @@ def show_behave_gui_usage():
197
182
  print(sc)
198
183
  print("")
199
184
  print(" Usage:")
200
- print(" seleniumbase behave-gui [OPTIONAL PATH or TEST FILE]")
201
- print(" seleniumbase gui-behave [OPTIONAL PATH or TEST FILE]")
202
- print(" OR: sbase behave-gui [OPTIONAL PATH or TEST FILE]")
203
- print(" OR: sbase gui-behave [OPTIONAL PATH or TEST FILE]")
185
+ print(" seleniumbase behave-gui [OPTIONAL PATH or TEST FILE]")
186
+ print(" seleniumbase gui-behave [OPTIONAL PATH or TEST FILE]")
187
+ print(" OR: sbase behave-gui [OPTIONAL PATH or TEST FILE]")
188
+ print(" OR: sbase gui-behave [OPTIONAL PATH or TEST FILE]")
204
189
  print(" Examples:")
205
- print(" sbase behave-gui")
206
- print(" sbase behave-gui features/")
207
- print(" sbase behave-gui features/calculator.feature")
190
+ print(" sbase behave-gui")
191
+ print(" sbase behave-gui features/")
192
+ print(" sbase behave-gui features/calculator.feature")
208
193
  print(" Output:")
209
- print(" Launches SeleniumBase Commander | GUI for Behave.")
194
+ print(" Launches SeleniumBase Commander | GUI for Behave.")
210
195
  print("")
211
196
 
212
197
 
@@ -218,16 +203,16 @@ def show_caseplans_usage():
218
203
  print(sc)
219
204
  print("")
220
205
  print(" Usage:")
221
- print(" seleniumbase caseplans [OPTIONAL PATH or TEST FILE]")
222
- print(" OR: sbase caseplans [OPTIONAL PATH or TEST FILE]")
206
+ print(" seleniumbase caseplans [OPTIONAL PATH or TEST FILE]")
207
+ print(" OR: sbase caseplans [OPTIONAL PATH or TEST FILE]")
223
208
  print(" Examples:")
224
- print(" sbase caseplans")
225
- print(" sbase caseplans -k agent")
226
- print(" sbase caseplans -m marker2")
227
- print(" sbase caseplans test_suite.py")
228
- print(" sbase caseplans offline_examples/")
209
+ print(" sbase caseplans")
210
+ print(" sbase caseplans -k agent")
211
+ print(" sbase caseplans -m marker2")
212
+ print(" sbase caseplans test_suite.py")
213
+ print(" sbase caseplans offline_examples/")
229
214
  print(" Output:")
230
- print(" Launches the SeleniumBase Case Plans Generator.")
215
+ print(" Launches the SeleniumBase Case Plans Generator.")
231
216
  print("")
232
217
 
233
218
 
@@ -239,18 +224,18 @@ def show_mkdir_usage():
239
224
  print(sc)
240
225
  print("")
241
226
  print(" Usage:")
242
- print(" seleniumbase mkdir [DIRECTORY] [OPTIONS]")
243
- print(" OR: sbase mkdir [DIRECTORY] [OPTIONS]")
227
+ print(" seleniumbase mkdir [DIRECTORY] [OPTIONS]")
228
+ print(" OR: sbase mkdir [DIRECTORY] [OPTIONS]")
244
229
  print(" Example:")
245
- print(" sbase mkdir ui_tests")
230
+ print(" sbase mkdir ui_tests")
246
231
  print(" Options:")
247
- print(" -b / --basic (Only config files. No tests added.)")
232
+ print(" -b / --basic (Only config files. No tests added.)")
248
233
  print(" Output:")
249
- print(" Creates a new folder for running SBase scripts.")
250
- print(" The new folder contains default config files,")
251
- print(" sample tests for helping new users get started,")
252
- print(" and Python boilerplates for setting up customized")
253
- print(" test frameworks.")
234
+ print(" Creates a new folder for running SBase scripts.")
235
+ print(" The new folder contains default config files,")
236
+ print(" sample tests for helping new users get started,")
237
+ print(" and Python boilerplates for setting up customized")
238
+ print(" test frameworks.")
254
239
  print("")
255
240
 
256
241
 
@@ -262,38 +247,38 @@ def show_mkfile_usage():
262
247
  print(sc)
263
248
  print("")
264
249
  print(" Usage:")
265
- print(" seleniumbase mkfile [FILE.py] [OPTIONS]")
266
- print(" OR: sbase mkfile [FILE.py] [OPTIONS]")
250
+ print(" seleniumbase mkfile [FILE.py] [OPTIONS]")
251
+ print(" OR: sbase mkfile [FILE.py] [OPTIONS]")
267
252
  print(" Example:")
268
- print(" sbase mkfile new_test.py")
253
+ print(" sbase mkfile new_test.py")
269
254
  print(" Options:")
270
- print(" --uc (UC Mode boilerplate using SB context manager)")
271
- print(" -b / --basic (Basic boilerplate / single-line test)")
272
- print(" -r / --rec (Adds Pdb+ breakpoint for Recorder Mode)")
273
- print(" --url=URL (Makes the test start on a specific page)")
255
+ print(" --uc (UC Mode boilerplate using SB context manager)")
256
+ print(" -b / --basic (Basic boilerplate / single-line test)")
257
+ print(" -r / --rec (Adds Pdb+ breakpoint for Recorder Mode)")
258
+ print(" --url=URL (Makes the test start on a specific page)")
274
259
  print(" Language Options:")
275
- print(" --en / --English | --zh / --Chinese")
276
- print(" --nl / --Dutch | --fr / --French")
277
- print(" --it / --Italian | --ja / --Japanese")
278
- print(" --ko / --Korean | --pt / --Portuguese")
279
- print(" --ru / --Russian | --es / --Spanish")
260
+ print(" --en / --English | --zh / --Chinese")
261
+ print(" --nl / --Dutch | --fr / --French")
262
+ print(" --it / --Italian | --ja / --Japanese")
263
+ print(" --ko / --Korean | --pt / --Portuguese")
264
+ print(" --ru / --Russian | --es / --Spanish")
280
265
  print(" Syntax Formats:")
281
- print(" --bc / --basecase (BaseCase class inheritance)")
282
- print(" --pf / --pytest-fixture (sb pytest fixture)")
283
- print(" --cf / --class-fixture (class + sb pytest fixture)")
284
- print(" --cm / --context-manager (SB context manager)")
285
- print(" --dc / --driver-context (DriverContext manager)")
286
- print(" --dm / --driver-manager (Driver manager)")
266
+ print(" --bc / --basecase (BaseCase class inheritance)")
267
+ print(" --pf / --pytest-fixture (sb pytest fixture)")
268
+ print(" --cf / --class-fixture (class + sb pytest fixture)")
269
+ print(" --cm / --context-manager (SB context manager)")
270
+ print(" --dc / --driver-context (DriverContext manager)")
271
+ print(" --dm / --driver-manager (Driver manager)")
287
272
  print(" Output:")
288
- print(" Creates a new SBase test file with boilerplate code.")
289
- print(" If the file already exists, an error is raised.")
290
- print(" By default, uses English with BaseCase inheritance,")
291
- print(" and creates a boilerplate with common SeleniumBase")
292
- print(' methods: "open", "type", "click", "assert_element",')
293
- print(' and "assert_text". If using the basic boilerplate')
294
- print(' option, only the "open" method is included. Only the')
295
- print(" BaseCase format supports Languages or Recorder Mode.")
296
- print(" UC Mode automatically uses English with SB() format.")
273
+ print(" Creates a new SBase test file with boilerplate code.")
274
+ print(" If the file already exists, an error is raised.")
275
+ print(" By default, uses English with BaseCase inheritance,")
276
+ print(" and creates a boilerplate with common SeleniumBase")
277
+ print(' methods: "open", "type", "click", "assert_element",')
278
+ print(' and "assert_text". If using the basic boilerplate')
279
+ print(' option, only the "open" method is included. Only the')
280
+ print(" BaseCase format supports Languages or Recorder Mode.")
281
+ print(" UC Mode automatically uses English with SB() format.")
297
282
  print("")
298
283
 
299
284
 
@@ -305,22 +290,22 @@ def show_mkrec_usage():
305
290
  print(sc)
306
291
  print("")
307
292
  print(" Usage:")
308
- print(" seleniumbase mkrec [FILE.py] [OPTIONS]")
309
- print(" OR: sbase mkrec [FILE.py] [OPTIONS]")
293
+ print(" seleniumbase mkrec [FILE.py] [OPTIONS]")
294
+ print(" OR: sbase mkrec [FILE.py] [OPTIONS]")
310
295
  print(" Examples:")
311
- print(" sbase mkrec new_test.py")
312
- print(" sbase mkrec new_test.py --url=wikipedia.org")
296
+ print(" sbase mkrec new_test.py")
297
+ print(" sbase mkrec new_test.py --url=wikipedia.org")
313
298
  print(" Options:")
314
- print(" --url=URL (Sets the initial start page URL.)")
315
- print(" --edge (Use Edge browser instead of Chrome.)")
316
- print(" --gui / --headed (Use headed mode on Linux.)")
317
- print(" --uc / --undetected (Use undetectable mode.)")
318
- print(" --ee (Use SHIFT + ESC to end the recording.)")
319
- print(" --overwrite (Overwrite file when it exists.)")
320
- print(" --behave (Also output Behave/Gherkin files.)")
299
+ print(" --url=URL (Sets the initial start page URL.)")
300
+ print(" --edge (Use Edge browser instead of Chrome.)")
301
+ print(" --gui / --headed (Use headed mode on Linux.)")
302
+ print(" --uc / --undetected (Use undetectable mode.)")
303
+ print(" --ee (Use SHIFT + ESC to end the recording.)")
304
+ print(" --overwrite (Overwrite file when it exists.)")
305
+ print(" --behave (Also output Behave/Gherkin files.)")
321
306
  print(" Output:")
322
- print(" Creates a new SeleniumBase test using the Recorder.")
323
- print(" If the filename already exists, an error is raised.")
307
+ print(" Creates a new SeleniumBase test using the Recorder.")
308
+ print(" If the filename already exists, an error is raised.")
324
309
  print("")
325
310
 
326
311
 
@@ -332,22 +317,22 @@ def show_codegen_usage():
332
317
  print(sc)
333
318
  print("")
334
319
  print(" Usage:")
335
- print(" seleniumbase codegen [FILE.py] [OPTIONS]")
336
- print(" OR: sbase codegen [FILE.py] [OPTIONS]")
320
+ print(" seleniumbase codegen [FILE.py] [OPTIONS]")
321
+ print(" OR: sbase codegen [FILE.py] [OPTIONS]")
337
322
  print(" Examples:")
338
- print(" sbase codegen new_test.py")
339
- print(" sbase codegen new_test.py --url=wikipedia.org")
323
+ print(" sbase codegen new_test.py")
324
+ print(" sbase codegen new_test.py --url=wikipedia.org")
340
325
  print(" Options:")
341
- print(" --url=URL (Sets the initial start page URL.)")
342
- print(" --edge (Use Edge browser instead of Chrome.)")
343
- print(" --gui / --headed (Use headed mode on Linux.)")
344
- print(" --uc / --undetected (Use undetectable mode.)")
345
- print(" --ee (Use SHIFT + ESC to end the recording.)")
346
- print(" --overwrite (Overwrite file when it exists.)")
347
- print(" --behave (Also output Behave/Gherkin files.)")
326
+ print(" --url=URL (Sets the initial start page URL.)")
327
+ print(" --edge (Use Edge browser instead of Chrome.)")
328
+ print(" --gui / --headed (Use headed mode on Linux.)")
329
+ print(" --uc / --undetected (Use undetectable mode.)")
330
+ print(" --ee (Use SHIFT + ESC to end the recording.)")
331
+ print(" --overwrite (Overwrite file when it exists.)")
332
+ print(" --behave (Also output Behave/Gherkin files.)")
348
333
  print(" Output:")
349
- print(" Creates a new SeleniumBase test using the Recorder.")
350
- print(" If the filename already exists, an error is raised.")
334
+ print(" Creates a new SeleniumBase test using the Recorder.")
335
+ print(" If the filename already exists, an error is raised.")
351
336
  print("")
352
337
 
353
338
 
@@ -359,13 +344,13 @@ def show_recorder_usage():
359
344
  print(sc)
360
345
  print("")
361
346
  print(" Usage:")
362
- print(" seleniumbase recorder [OPTIONS]")
363
- print(" OR: sbase recorder [OPTIONS]")
347
+ print(" seleniumbase recorder [OPTIONS]")
348
+ print(" OR: sbase recorder [OPTIONS]")
364
349
  print(" Options:")
365
- print(" --uc / --undetected (Use undetectable mode.)")
366
- print(" --behave (Also output Behave/Gherkin files.)")
350
+ print(" --uc / --undetected (Use undetectable mode.)")
351
+ print(" --behave (Also output Behave/Gherkin files.)")
367
352
  print(" Output:")
368
- print(" Launches the SeleniumBase Recorder Desktop App.")
353
+ print(" Launches the SeleniumBase Recorder Desktop App.")
369
354
  print("")
370
355
 
371
356
 
@@ -377,22 +362,22 @@ def show_mkpres_usage():
377
362
  print(sc)
378
363
  print("")
379
364
  print(" Usage:")
380
- print(" seleniumbase mkpres [FILE.py] [LANG]")
381
- print(" OR: sbase mkpres [FILE.py] [LANG]")
365
+ print(" seleniumbase mkpres [FILE.py] [LANG]")
366
+ print(" OR: sbase mkpres [FILE.py] [LANG]")
382
367
  print(" Example:")
383
- print(" sbase mkpres new_presentation.py --en")
368
+ print(" sbase mkpres new_presentation.py --en")
384
369
  print(" Language Options:")
385
- print(" --en / --English | --zh / --Chinese")
386
- print(" --nl / --Dutch | --fr / --French")
387
- print(" --it / --Italian | --ja / --Japanese")
388
- print(" --ko / --Korean | --pt / --Portuguese")
389
- print(" --ru / --Russian | --es / --Spanish")
370
+ print(" --en / --English | --zh / --Chinese")
371
+ print(" --nl / --Dutch | --fr / --French")
372
+ print(" --it / --Italian | --ja / --Japanese")
373
+ print(" --ko / --Korean | --pt / --Portuguese")
374
+ print(" --ru / --Russian | --es / --Spanish")
390
375
  print(" Output:")
391
- print(" Creates a new presentation with 3 example slides.")
392
- print(" If the file already exists, an error is raised.")
393
- print(" By default, the slides are written in English,")
394
- print(' and use "serif" theme with "slide" transition.')
395
- print(" The slides can be used as a basic boilerplate.")
376
+ print(" Creates a new presentation with 3 example slides.")
377
+ print(" If the file already exists, an error is raised.")
378
+ print(" By default, the slides are written in English,")
379
+ print(' and use "serif" theme with "slide" transition.')
380
+ print(" The slides can be used as a basic boilerplate.")
396
381
  print("")
397
382
 
398
383
 
@@ -404,22 +389,22 @@ def show_mkchart_usage():
404
389
  print(sc)
405
390
  print("")
406
391
  print(" Usage:")
407
- print(" seleniumbase mkchart [FILE.py] [LANG]")
408
- print(" OR: sbase mkchart [FILE.py] [LANG]")
392
+ print(" seleniumbase mkchart [FILE.py] [LANG]")
393
+ print(" OR: sbase mkchart [FILE.py] [LANG]")
409
394
  print(" Example:")
410
- print(" sbase mkchart new_chart.py --en")
395
+ print(" sbase mkchart new_chart.py --en")
411
396
  print(" Language Options:")
412
- print(" --en / --English | --zh / --Chinese")
413
- print(" --nl / --Dutch | --fr / --French")
414
- print(" --it / --Italian | --ja / --Japanese")
415
- print(" --ko / --Korean | --pt / --Portuguese")
416
- print(" --ru / --Russian | --es / --Spanish")
397
+ print(" --en / --English | --zh / --Chinese")
398
+ print(" --nl / --Dutch | --fr / --French")
399
+ print(" --it / --Italian | --ja / --Japanese")
400
+ print(" --ko / --Korean | --pt / --Portuguese")
401
+ print(" --ru / --Russian | --es / --Spanish")
417
402
  print(" Output:")
418
- print(" Creates a new SeleniumBase chart presentation.")
419
- print(" If the file already exists, an error is raised.")
420
- print(" By default, the slides are written in English,")
421
- print(' and use a "sky" theme with "slide" transition.')
422
- print(" The chart can be used as a basic boilerplate.")
403
+ print(" Creates a new SeleniumBase chart presentation.")
404
+ print(" If the file already exists, an error is raised.")
405
+ print(" By default, the slides are written in English,")
406
+ print(' and use a "sky" theme with "slide" transition.')
407
+ print(" The chart can be used as a basic boilerplate.")
423
408
  print("")
424
409
 
425
410
 
@@ -431,13 +416,13 @@ def show_convert_usage():
431
416
  print(sc)
432
417
  print("")
433
418
  print(" Usage:")
434
- print(" seleniumbase convert [WEBDRIVER_UNITTEST_FILE.py]")
435
- print(" OR: sbase convert [WEBDRIVER_UNITTEST_FILE.py]")
419
+ print(" seleniumbase convert [WEBDRIVER_UNITTEST_FILE.py]")
420
+ print(" OR: sbase convert [WEBDRIVER_UNITTEST_FILE.py]")
436
421
  print(" Output:")
437
- print(" Converts a Selenium IDE exported WebDriver unittest")
438
- print(" file into a SeleniumBase file. Adds _SB to the new")
439
- print(" file name while keeping the original file intact.")
440
- print(" (Works with Katalon Recorder Selenium scripts.)")
422
+ print(" Converts a Selenium IDE exported WebDriver unittest")
423
+ print(" file into a SeleniumBase file. Adds _SB to the new")
424
+ print(" file name while keeping the original file intact.")
425
+ print(" (Works with Katalon Recorder Selenium scripts.)")
441
426
  print("")
442
427
 
443
428
 
@@ -449,13 +434,13 @@ def show_print_usage():
449
434
  print(sc)
450
435
  print("")
451
436
  print(" Usage:")
452
- print(" seleniumbase print [FILE] [OPTIONS]")
453
- print(" OR: sbase print [FILE] [OPTIONS]")
437
+ print(" seleniumbase print [FILE] [OPTIONS]")
438
+ print(" OR: sbase print [FILE] [OPTIONS]")
454
439
  print(" Options:")
455
- print(" -n (Add line Numbers to the rows)")
440
+ print(" -n (Add line Numbers to the rows)")
456
441
  print(" Output:")
457
- print(" Prints the code/text of any file")
458
- print(" with syntax-highlighting.")
442
+ print(" Prints the code/text of any file")
443
+ print(" with syntax-highlighting.")
459
444
  print("")
460
445
 
461
446
 
@@ -467,30 +452,30 @@ def show_translate_usage():
467
452
  print(sc)
468
453
  print("")
469
454
  print(" Usage:")
470
- print(" seleniumbase translate [SB_FILE.py] [LANG] [ACTION]")
471
- print(" OR: sbase translate [SB_FILE.py] [LANG] [ACTION]")
455
+ print(" seleniumbase translate [SB_FILE.py] [LANG] [ACTION]")
456
+ print(" OR: sbase translate [SB_FILE.py] [LANG] [ACTION]")
472
457
  print(" Languages:")
473
- print(" --en / --English | --zh / --Chinese")
474
- print(" --nl / --Dutch | --fr / --French")
475
- print(" --it / --Italian | --ja / --Japanese")
476
- print(" --ko / --Korean | --pt / --Portuguese")
477
- print(" --ru / --Russian | --es / --Spanish")
458
+ print(" --en / --English | --zh / --Chinese")
459
+ print(" --nl / --Dutch | --fr / --French")
460
+ print(" --it / --Italian | --ja / --Japanese")
461
+ print(" --ko / --Korean | --pt / --Portuguese")
462
+ print(" --ru / --Russian | --es / --Spanish")
478
463
  print(" Actions:")
479
- print(" -p / --print (Print translation output to the screen)")
480
- print(" -o / --overwrite (Overwrite the file being translated)")
481
- print(" -c / --copy (Copy the translation to a new .py file)")
464
+ print(" -p / --print (Print translation output to the screen)")
465
+ print(" -o / --overwrite (Overwrite the file being translated)")
466
+ print(" -c / --copy (Copy the translation to a new .py file)")
482
467
  print(" Options:")
483
- print(" -n (include line Numbers when using the Print action)")
468
+ print(" -n (include line Numbers when using the Print action)")
484
469
  print(" Output:")
485
- print(" Translates a SeleniumBase Python file into the language")
486
- print(' specified. Method calls and "import" lines get swapped.')
487
- print(" Both a language and an action must be specified.")
488
- print(' The "-p" action can be paired with one other action.')
489
- print(' When running with "-c" (or "--copy"), the new file name')
490
- print(" will be the original name appended with an underscore")
491
- print(" plus the 2-letter language code of the new language.")
492
- print(' (Example: Translating "test_1.py" into Japanese with')
493
- print(' "-c" will create a new file called "test_1_ja.py".)')
470
+ print(" Translates a SeleniumBase Python file into the language")
471
+ print(' specified. Method calls and "import" lines get swapped.')
472
+ print(" Both a language and an action must be specified.")
473
+ print(' The "-p" action can be paired with one other action.')
474
+ print(' When running with "-c" (or "--copy"), the new file name')
475
+ print(" will be the original name appended with an underscore")
476
+ print(" plus the 2-letter language code of the new language.")
477
+ print(' (Example: Translating "test_1.py" into Japanese with')
478
+ print(' "-c" will create a new file called "test_1_ja.py".)')
494
479
  print("")
495
480
 
496
481
 
@@ -502,12 +487,12 @@ def show_extract_objects_usage():
502
487
  print(sc)
503
488
  print("")
504
489
  print(" Usage:")
505
- print(" seleniumbase extract-objects [SB_FILE.py]")
506
- print(" OR: sbase extract-objects [SB_FILE.py]")
490
+ print(" seleniumbase extract-objects [SB_FILE.py]")
491
+ print(" OR: sbase extract-objects [SB_FILE.py]")
507
492
  print(" Output:")
508
- print(" Creates page objects based on selectors found in a")
509
- print(" seleniumbase Python file and saves those objects to the")
510
- print(' "page_objects.py" file in the same folder as the tests.')
493
+ print(" Creates page objects based on selectors found in a")
494
+ print(" seleniumbase Python file and saves those objects to the")
495
+ print(' "page_objects.py" file in the same folder as the tests.')
511
496
  print("")
512
497
 
513
498
 
@@ -519,15 +504,15 @@ def show_inject_objects_usage():
519
504
  print(sc)
520
505
  print("")
521
506
  print(" Usage:")
522
- print(" seleniumbase inject-objects [SB_FILE.py] [OPTIONS]")
523
- print(" OR: sbase inject-objects [SB_FILE.py] [OPTIONS]")
507
+ print(" seleniumbase inject-objects [SB_FILE.py] [OPTIONS]")
508
+ print(" OR: sbase inject-objects [SB_FILE.py] [OPTIONS]")
524
509
  print(" Options:")
525
- print(" -c, --comments (Add object selectors to the comments.)")
526
- print(" (Default: No added comments.)")
510
+ print(" -c, --comments (Add object selectors to the comments.)")
511
+ print(" (Default: No added comments.)")
527
512
  print(" Output:")
528
- print(' Takes the page objects found in the "page_objects.py"')
529
- print(" file and uses those to replace matching selectors in")
530
- print(" the selected seleniumbase Python file.")
513
+ print(' Takes the page objects found in the "page_objects.py"')
514
+ print(" file and uses those to replace matching selectors in")
515
+ print(" the selected seleniumbase Python file.")
531
516
  print("")
532
517
 
533
518
 
@@ -539,18 +524,18 @@ def show_objectify_usage():
539
524
  print(sc)
540
525
  print("")
541
526
  print(" Usage:")
542
- print(" seleniumbase objectify [SB_FILE.py] [OPTIONS]")
543
- print(" OR: sbase objectify [SB_FILE.py] [OPTIONS]")
527
+ print(" seleniumbase objectify [SB_FILE.py] [OPTIONS]")
528
+ print(" OR: sbase objectify [SB_FILE.py] [OPTIONS]")
544
529
  print(" Options:")
545
- print(" -c, --comments (Add object selectors to the comments.)")
546
- print(" (Default: No added comments.)")
530
+ print(" -c, --comments (Add object selectors to the comments.)")
531
+ print(" (Default: No added comments.)")
547
532
  print(" Output:")
548
- print(" A modified version of the file where the selectors")
549
- print(" have been replaced with variable names defined in")
550
- print(' "page_objects.py", supporting the Page Object Pattern.')
533
+ print(" A modified version of the file where the selectors")
534
+ print(" have been replaced with variable names defined in")
535
+ print(' "page_objects.py", supporting the Page Object Pattern.')
551
536
  print("")
552
- print(' (seleniumbase "objectify" has the same outcome as')
553
- print(' combining "extract-objects" with "inject-objects")')
537
+ print(' (seleniumbase "objectify" has the same outcome as')
538
+ print(' combining "extract-objects" with "inject-objects")')
554
539
  print("")
555
540
 
556
541
 
@@ -562,16 +547,16 @@ def show_revert_objects_usage():
562
547
  print(sc)
563
548
  print("")
564
549
  print(" Usage:")
565
- print(" seleniumbase revert-objects [SB_FILE.py] [OPTIONS]")
566
- print(" OR: sbase revert-objects [SB_FILE.py] [OPTIONS]")
550
+ print(" seleniumbase revert-objects [SB_FILE.py] [OPTIONS]")
551
+ print(" OR: sbase revert-objects [SB_FILE.py] [OPTIONS]")
567
552
  print(" Options:")
568
- print(" -c, --comments (Keep existing comments for the lines.)")
569
- print(" (Default: No comments are kept.)")
553
+ print(" -c, --comments (Keep existing comments for the lines.)")
554
+ print(" (Default: No comments are kept.)")
570
555
  print(" Output:")
571
- print(' Reverts the changes made by "seleniumbase objectify" or')
572
- print(' "seleniumbase inject-objects" when run against a')
573
- print(" seleniumbase Python file. Objects will get replaced by")
574
- print(' selectors stored in the "page_objects.py" file.')
556
+ print(' Reverts the changes made by "seleniumbase objectify" or')
557
+ print(' "seleniumbase inject-objects" when run against a')
558
+ print(" seleniumbase Python file. Objects will get replaced by")
559
+ print(' selectors stored in the "page_objects.py" file.')
575
560
  print("")
576
561
 
577
562
 
@@ -583,12 +568,12 @@ def show_encrypt_usage():
583
568
  print(sc)
584
569
  print("")
585
570
  print(" Usage:")
586
- print(" seleniumbase encrypt || seleniumbase obfuscate")
587
- print(" --OR--")
588
- print(" sbase encrypt || sbase obfuscate")
571
+ print(" seleniumbase encrypt || seleniumbase obfuscate")
572
+ print(" --OR--")
573
+ print(" sbase encrypt || sbase obfuscate")
589
574
  print(" Output:")
590
- print(" Runs the password encryption/obfuscation tool.")
591
- print(" (Where you can enter a password to encrypt/obfuscate.)")
575
+ print(" Runs the password encryption/obfuscation tool.")
576
+ print(" (Where you can enter a password to encrypt/obfuscate.)")
592
577
  print("")
593
578
 
594
579
 
@@ -600,12 +585,12 @@ def show_decrypt_usage():
600
585
  print(sc)
601
586
  print("")
602
587
  print(" Usage:")
603
- print(" seleniumbase decrypt || seleniumbase unobfuscate")
604
- print(" --OR--")
605
- print(" sbase decrypt || sbase unobfuscate")
588
+ print(" seleniumbase decrypt || seleniumbase unobfuscate")
589
+ print(" --OR--")
590
+ print(" sbase decrypt || sbase unobfuscate")
606
591
  print(" Output:")
607
- print(" Runs the password decryption/unobfuscation tool.")
608
- print(" (Where you can enter an encrypted password to decrypt.)")
592
+ print(" Runs the password decryption/unobfuscation tool.")
593
+ print(" (Where you can enter an encrypted password to decrypt.)")
609
594
  print("")
610
595
 
611
596
 
@@ -617,11 +602,11 @@ def show_download_usage():
617
602
  print(sc)
618
603
  print("")
619
604
  print(" Usage:")
620
- print(" seleniumbase download server")
621
- print(" OR: sbase download server")
605
+ print(" seleniumbase download server")
606
+ print(" OR: sbase download server")
622
607
  print(" Output:")
623
- print(" Downloads the Selenium Standalone Server.")
624
- print(" (Server is required for using your own Selenium Grid.)")
608
+ print(" Downloads the Selenium Standalone Server.")
609
+ print(" (Server is required for using your own Selenium Grid.)")
625
610
  print("")
626
611
 
627
612
 
@@ -633,22 +618,22 @@ def show_grid_hub_usage():
633
618
  print(sc)
634
619
  print("")
635
620
  print(" Usage:")
636
- print(" seleniumbase grid-hub {start|stop|restart} [OPTIONS]")
637
- print(" OR: sbase grid-hub {start|stop|restart} [OPTIONS]")
621
+ print(" seleniumbase grid-hub {start|stop|restart} [OPTIONS]")
622
+ print(" OR: sbase grid-hub {start|stop|restart} [OPTIONS]")
638
623
  print(" Options:")
639
- print(" -v, --verbose (Increase verbosity of logging output.)")
640
- print(" (Default: Quiet logging / not verbose.)")
641
- print(" --timeout=TIMEOUT (Close idle browser after TIMEOUT.)")
642
- print(" (The default TIMEOUT: 230 seconds.)")
643
- print(" (Use --timeout=0 to skip timeouts.)")
624
+ print(" -v, --verbose (Increase verbosity of logging output.)")
625
+ print(" (Default: Quiet logging / not verbose.)")
626
+ print(" --timeout=TIMEOUT (Close idle browser after TIMEOUT.)")
627
+ print(" (The default TIMEOUT: 230 seconds.)")
628
+ print(" (Use --timeout=0 to skip timeouts.)")
644
629
  print(" Example:")
645
- print(" seleniumbase grid-hub start")
630
+ print(" seleniumbase grid-hub start")
646
631
  print(" Output:")
647
- print(" Controls the Selenium Grid Hub Server, which allows")
648
- print(" for running tests on multiple machines in parallel")
649
- print(" to speed up test runs and reduce the total time")
650
- print(" of test suite execution.")
651
- print(' You can "start" or "stop" the Grid Hub server.')
632
+ print(" Controls the Selenium Grid Hub Server, which allows")
633
+ print(" for running tests on multiple machines in parallel")
634
+ print(" to speed up test runs and reduce the total time")
635
+ print(" of test suite execution.")
636
+ print(' You can "start" or "stop" the Grid Hub server.')
652
637
  print("")
653
638
 
654
639
 
@@ -660,19 +645,19 @@ def show_grid_node_usage():
660
645
  print(sc)
661
646
  print("")
662
647
  print(" Usage:")
663
- print(" seleniumbase grid-node {start|stop|restart} [OPTIONS]")
664
- print(" OR: sbase grid-node {start|stop|restart} [OPTIONS]")
648
+ print(" seleniumbase grid-node {start|stop|restart} [OPTIONS]")
649
+ print(" OR: sbase grid-node {start|stop|restart} [OPTIONS]")
665
650
  print(" Options:")
666
- print(" --hub=[HOST/IP] (The Grid Hub Hostname / IP Address.)")
667
- print(" (Default: 127.0.0.1 if not set.)")
668
- print(" -v, --verbose (Increase verbosity of logging output.)")
669
- print(" (Default: Quiet logging / Not verbose.)")
651
+ print(" --hub=[HOST/IP] (The Grid Hub Hostname / IP Address.)")
652
+ print(" (Default: 127.0.0.1 if not set.)")
653
+ print(" -v, --verbose (Increase verbosity of logging output.)")
654
+ print(" (Default: Quiet logging / Not verbose.)")
670
655
  print(" Example:")
671
- print(" seleniumbase grid-node start --hub=127.0.0.1")
656
+ print(" seleniumbase grid-node start --hub=127.0.0.1")
672
657
  print(" Output:")
673
- print(" Controls the Selenium Grid node, which serves as a")
674
- print(" worker machine for your Selenium Grid Hub server.")
675
- print(' You can "start" or "stop" the Grid node.')
658
+ print(" Controls the Selenium Grid node, which serves as a")
659
+ print(" worker machine for your Selenium Grid Hub server.")
660
+ print(' You can "start" or "stop" the Grid node.')
676
661
  print("")
677
662
 
678
663
 
@@ -799,16 +784,16 @@ def show_options():
799
784
  line = '(Some options are Chromium-specific, e.g. "--guest --mobile")'
800
785
  print(line)
801
786
  op = "\n"
802
- op += '--browser=BROWSER (Choice of web browser. Default is "chrome".)\n'
803
- op += "--edge / --firefox / --safari (Shortcut for browser selection.)\n"
804
- op += "--headless (Run tests headlessly. Default setting on Linux OS.)\n"
805
- op += "--demo (Slow down and visually see test actions as they occur.)\n"
806
- op += "--slow (Slow down the automation. Faster than using Demo Mode.)\n"
787
+ op += '--browser=BROWSER (Choice of web browser. Default is "chrome")\n'
788
+ op += "--edge / --firefox / --safari (Shortcut for browser selection)\n"
789
+ op += "--headless (Run tests headlessly. Default setting on Linux OS)\n"
790
+ op += "--demo (Slow down and visually see test actions as they occur)\n"
791
+ op += "--slow (Slow down the automation. Faster than using Demo Mode)\n"
807
792
  op += "--rs / --reuse-session (Reuse browser session between tests.)\n"
808
793
  op += "--reuse-class-session / --rcs (RS, but for class tests only.)\n"
809
794
  op += "--crumbs (Clear all cookies between tests reusing a session.)\n"
810
- op += "--maximize (Start tests with the web browser window maximized.)\n"
811
- op += "--dashboard (Enable SeleniumBase's Dashboard at dashboard.html)\n"
795
+ op += "--maximize (Start tests with the browser window maximized)\n"
796
+ op += "--dashboard (Enable SeleniumBase Dashboard at dashboard.html)\n"
812
797
  op += "--incognito (Enable Chromium's Incognito Mode.)\n"
813
798
  op += "--guest (Enable Chromium's Guest Mode.)\n"
814
799
  op += "--dark (Enable Chromium's Dark Mode.)\n"
@@ -820,15 +805,15 @@ def show_options():
820
805
  op += "--collect-only / --co (Only show discovered tests. No run.)\n"
821
806
  op += "--co -q (Only show full names of discovered tests. No run.)\n"
822
807
  op += "-x (Stop running tests after the first failure is reached.)\n"
823
- op += "--pdb (Enter the Post Mortem Debug Mode after any test fails.)\n"
824
- op += "--trace (Enter Debug Mode immediately after starting any test.)\n"
825
- op += " | Debug Mode Commands >>> help / h: List all commands. |\n"
826
- op += " | n: Next line of method. s: Step through. c: Continue. |\n"
827
- op += " | return / r: Run until method returns. j: Jump to line. |\n"
828
- op += " | where / w: Show stack spot. u: Up stack. d: Down stack. |\n"
829
- op += " | longlist / ll: See code. dir(): List namespace objects. |\n"
808
+ op += "--pdb (Enter Post Mortem Debug Mode after any test fails.)\n"
809
+ op += "--trace (Enter Debug Mode immediately after starting tests.)\n"
810
+ op += " | Debug Mode Commands >>> help / h: List all commands. |\n"
811
+ op += " | n: Next line of method. s: Step into. c: Continue. |\n"
812
+ op += " | where / w: Show stack spot. u: Up stack. d: Down stack. |\n"
813
+ op += " | return / r: Run until method returns. j: Jump to line. |\n"
814
+ op += " | longlist / ll: See code. dir(): List namespace objects. |\n"
830
815
  op += "--help / -h (Display list of all available pytest options.)\n"
831
- op += "--ftrace / --final-trace (Enter Debug Mode after any test.)\n"
816
+ op += "--ftrace / --final-trace (Enter Debug Mode after tests end.)\n"
832
817
  op += "--recorder / --rec (Save browser actions as Python scripts.)\n"
833
818
  op += "--rec-behave / --rec-gherkin (Save actions as Gherkin code.)\n"
834
819
  op += "--rec-print (Display recorded scripts when they are created.)\n"
@@ -841,14 +826,14 @@ def show_options():
841
826
  op += '--metrics=STRING (Set mobile "CSSWidth,CSSHeight,PixelRatio".)\n'
842
827
  op += "--ad-block (Block certain types of iframe ads from appearing.)\n"
843
828
  op += "--settings-file=FILE (Override default SeleniumBase settings.)\n"
844
- op += '--env=ENV (Set the test env. Access with "self.env" in tests.)\n'
845
- op += '--data=DATA (Extra test data. Access with "self.data" in tests.)\n'
846
- op += "--disable-csp (Disable the Content Security Policy of websites.)\n"
847
- op += "--remote-debug (Sync to Ch-R-Debugger chrome://inspect/#devices)\n"
829
+ op += '--env=ENV (Set the test env. Use "self.env" to access.)\n'
830
+ op += '--data=DATA (Extra test data. Use "self.data" to access.)\n'
831
+ op += "--disable-csp (Disable the Content Security Policy of sites.)\n"
832
+ op += "--remote-debug (Sync to Ch_Debugger chrome://inspect/#devices)\n"
848
833
  op += "--server=SERVER (The Selenium Grid server/IP used for tests.)\n"
849
834
  op += "--port=PORT (The Selenium Grid port used by the test server.)\n"
850
- op += "--proxy=SERVER:PORT (Connect to a proxy server:port for tests.)\n"
851
- op += "--proxy=USER:PASS@SERVER:PORT (Use authenticated proxy server.)\n"
835
+ op += "--proxy=SERVER:PORT (Connect to a proxy server:port for tests)\n"
836
+ op += "--proxy=USER:PASS@SERVER:PORT (Use authenticated proxy server)\n"
852
837
  op += cr
853
838
  op = op.replace("\n-", "\n" + c1 + "-").replace(" (", cr + " (")
854
839
  op = op.replace(" / -", cr + " / " + c1 + "-")
@@ -858,7 +843,8 @@ def show_options():
858
843
  op = op.replace("Debug Mode Commands", c5 + "Debug Mode Commands" + c3)
859
844
  op = op.replace(">>>", c4 + ">>>" + c3)
860
845
  print(op)
861
- line = "For the full list of " + c2 + "command-line options" + cr
846
+ line = "To view all " + c3 + "pytest" + cr
847
+ line += " " + c2 + "command-line options" + cr
862
848
  line += ', type: "' + c3 + "pytest" + cr + " " + c1 + "--help" + cr + '".'
863
849
  print(line)
864
850
  print("")
@@ -880,14 +866,14 @@ def show_behave_options():
880
866
  line = '(Some options are Chromium-specific, e.g. "-D guest -D mobile")'
881
867
  print(line)
882
868
  op = "\n"
883
- op += '-D browser=BROWSER (The web browser to use. Default is "chrome")\n'
869
+ op += '-D browser=BROWSER (Choice of web browser. Default is "chrome")\n'
884
870
  op += "-D headless (Run tests headlessly. Default mode on Linux OS.)\n"
885
- op += "-D demo (Slow down and visually see test actions as they occur.)\n"
886
- op += "-D slow (Slow down the automation. Faster than using Demo Mode.)\n"
871
+ op += "-D demo (Slow down and visually see test actions as they occur)\n"
872
+ op += "-D slow (Slow down the automation. Faster than using Demo Mode)\n"
887
873
  op += "-D reuse-session / -D rs (Reuse browser session between tests.)\n"
888
874
  op += "-D crumbs (Clear all cookies between tests reusing a session.)\n"
889
- op += "-D maximize (Start tests with the web browser window maximized.)\n"
890
- op += "-D dashboard (Enable SeleniumBase's Dashboard at dashboard.html)\n"
875
+ op += "-D maximize (Start tests with the web browser window maximized)\n"
876
+ op += "-D dashboard (Enable SeleniumBase Dashboard at dashboard.html)\n"
891
877
  op += "-D incognito (Enable Chromium's Incognito Mode.)\n"
892
878
  op += "-D guest (Enable Chromium's Guest Mode.)\n"
893
879
  op += "-D dark (Enable Chromium's Dark Mode.)\n"
@@ -896,11 +882,11 @@ def show_behave_options():
896
882
  op += "--dry-run / -d (Dry run. Only show discovered tests.)\n"
897
883
  op += "--stop (Stop running tests after the first failure is reached.)\n"
898
884
  op += "-D pdb (Enter the Post Mortem Debug Mode after any test fails.)\n"
899
- op += " | Debug Mode Commands >>> help / h: List all commands. |\n"
900
- op += " | n: Next line of method. s: Step through. c: Continue. |\n"
901
- op += " | return / r: Run until method returns. j: Jump to line. |\n"
902
- op += " | where / w: Show stack spot. u: Up stack. d: Down stack. |\n"
903
- op += " | longlist / ll: See code. dir(): List namespace objects. |\n"
885
+ op += " | Debug Mode Commands >>> help / h: List all commands. |\n"
886
+ op += " | n: Next line of method. s: Step through. c: Continue. |\n"
887
+ op += " | return / r: Run until method returns. j: Jump to line. |\n"
888
+ op += " | where / w: Show stack spot. u: Up stack. d: Down stack. |\n"
889
+ op += " | longlist / ll: See code. dir(): List namespace objects. |\n"
904
890
  op += "-D recorder (Record browser actions to generate test scripts.)\n"
905
891
  op += "-D rec-print (Display recorded scripts when they are created.)\n"
906
892
  op += "-D save-screenshot (Save a screenshot at the end of each test.)\n"
@@ -912,14 +898,14 @@ def show_behave_options():
912
898
  op += '-D metrics=STRING (Set mobile "CSSWidth,CSSHeight,PixelRatio".)\n'
913
899
  op += "-D ad-block (Block some types of display ads after page loads.)\n"
914
900
  op += "-D settings-file=FILE (Override default SeleniumBase settings.)\n"
915
- op += '-D env=ENV (Set the test env. Access using "self.env" in tests.)\n'
901
+ op += '-D env=ENV (Set the test env. Access using "self.env" in tests)\n'
916
902
  op += '-D data=DATA (Extra test data. Access using "self.data".)\n'
917
903
  op += "-D disable-csp (Disable the Content Security Policy of sites.)\n"
918
904
  op += "-D remote-debug (Sync Ch-R-Debugger chrome://inspect/#devices)\n"
919
905
  op += "-D server=SERVER (The Selenium Grid server/IP used for tests.)\n"
920
906
  op += "-D port=PORT (The Selenium Grid port used by the test server.)\n"
921
- op += "-D proxy=SERVER:PORT (Connect to a proxy server:port for tests.)\n"
922
- op += "-D proxy=USER:PASS@SERVER:PORT (Use authenticated proxy server.)\n"
907
+ op += "-D proxy=SERVER:PORT (Connect to a proxy server:port for tests)\n"
908
+ op += "-D proxy=USER:PASS@SERVER:PORT (Use authenticated proxy server)\n"
923
909
  op += cr
924
910
  op = op.replace("\n-", "\n" + c1 + "-").replace(" (", cr + " (")
925
911
  op = op.replace(" / -", cr + " / " + c1 + "-")
@@ -941,7 +927,7 @@ def show_detailed_help():
941
927
  c6 = colorama.Back.CYAN
942
928
  cr = colorama.Style.RESET_ALL
943
929
  show_basic_usage()
944
- print(c6 + " " + c2 + " Commands: " + c6 + " ")
930
+ print(c6 + " " + c2 + " Commands: " + c6 + " ")
945
931
  print(cr)
946
932
  show_install_usage()
947
933
  show_commander_usage()
@@ -966,7 +952,10 @@ def show_detailed_help():
966
952
  show_download_usage()
967
953
  show_grid_hub_usage()
968
954
  show_grid_node_usage()
969
- print('* (Use "' + c3 + "pytest" + cr + '" for running tests) *\n')
955
+ print(
956
+ '* (Use "' + c3 + "pytest" + cr + '" or "' + c3 + ''
957
+ '' + "python" + cr + '" for running tests) *\n'
958
+ )
970
959
 
971
960
 
972
961
  def main():
@@ -974,7 +963,7 @@ def main():
974
963
  command_args = None
975
964
  num_args = len(sys.argv)
976
965
  if num_args == 1:
977
- show_usage()
966
+ show_basic_usage()
978
967
  return
979
968
  elif num_args == 2:
980
969
  command = sys.argv[1]
@@ -1202,7 +1191,7 @@ def main():
1202
1191
  else:
1203
1192
  show_basic_usage()
1204
1193
  show_grid_node_usage()
1205
- elif command == "version" or command == "--version":
1194
+ elif command == "version" or command == "--version" or command == "-v":
1206
1195
  if len(command_args) == 0:
1207
1196
  from seleniumbase.console_scripts import logo_helper
1208
1197
 
@@ -1238,7 +1227,7 @@ def main():
1238
1227
  "proxy.py", version=constants.ProxyPy.VER
1239
1228
  )
1240
1229
  os.system("proxy %s" % " ".join(sys.argv[2:]))
1241
- elif command == "help" or command == "--help":
1230
+ elif command == "help" or command == "--help" or command == "-h":
1242
1231
  if len(command_args) >= 1:
1243
1232
  if command_args[0] == "get":
1244
1233
  print("")
@@ -1362,7 +1351,7 @@ def main():
1362
1351
  return
1363
1352
  show_detailed_help()
1364
1353
  else:
1365
- show_usage()
1354
+ show_basic_usage()
1366
1355
  c5 = colorama.Fore.RED + colorama.Back.LIGHTYELLOW_EX
1367
1356
  c7 = colorama.Fore.BLACK + colorama.Back.MAGENTA
1368
1357
  cr = colorama.Style.RESET_ALL