11
11
from seleniumbase .config import proxy_list
12
12
from seleniumbase .core import download_helper
13
13
from seleniumbase .core import proxy_helper
14
+ from seleniumbase .core import capabilities_parser
14
15
from seleniumbase .fixtures import constants
15
16
from seleniumbase .fixtures import page_utils
16
17
from seleniumbase import drivers # webdriver storage folder for SeleniumBase
@@ -187,7 +188,8 @@ def validate_proxy_string(proxy_string):
187
188
188
189
189
190
def get_driver (browser_name , headless = False , use_grid = False ,
190
- servername = 'localhost' , port = 4444 , proxy_string = None ):
191
+ servername = 'localhost' , port = 4444 , proxy_string = None ,
192
+ cap_file = None ):
191
193
proxy_auth = False
192
194
proxy_user = None
193
195
proxy_pass = None
@@ -216,7 +218,7 @@ def get_driver(browser_name, headless=False, use_grid=False,
216
218
if use_grid :
217
219
return get_remote_driver (
218
220
browser_name , headless , servername , port , proxy_string , proxy_auth ,
219
- proxy_user , proxy_pass )
221
+ proxy_user , proxy_pass , cap_file )
220
222
else :
221
223
return get_local_driver (
222
224
browser_name , headless , proxy_string , proxy_auth ,
@@ -225,10 +227,13 @@ def get_driver(browser_name, headless=False, use_grid=False,
225
227
226
228
def get_remote_driver (
227
229
browser_name , headless , servername , port , proxy_string , proxy_auth ,
228
- proxy_user , proxy_pass ):
230
+ proxy_user , proxy_pass , cap_file ):
229
231
downloads_path = download_helper .get_downloads_folder ()
230
232
download_helper .reset_downloads_folder ()
231
233
address = "http://%s:%s/wd/hub" % (servername , port )
234
+ desired_caps = {}
235
+ if cap_file :
236
+ desired_caps = capabilities_parser .get_desired_capabilities (cap_file )
232
237
233
238
if browser_name == constants .Browser .GOOGLE_CHROME :
234
239
chrome_options = _set_chrome_options (
@@ -239,6 +244,8 @@ def get_remote_driver(
239
244
chrome_options .add_argument ("--disable-gpu" )
240
245
chrome_options .add_argument ("--no-sandbox" )
241
246
capabilities = chrome_options .to_capabilities ()
247
+ for key in desired_caps .keys ():
248
+ capabilities [key ] = desired_caps [key ]
242
249
return webdriver .Remote (
243
250
command_executor = address ,
244
251
desired_capabilities = capabilities )
@@ -251,6 +258,8 @@ def get_remote_driver(
251
258
if headless :
252
259
firefox_capabilities ['moz:firefoxOptions' ] = (
253
260
{'args' : ['-headless' ]})
261
+ for key in desired_caps .keys ():
262
+ firefox_capabilities [key ] = desired_caps [key ]
254
263
capabilities = firefox_capabilities
255
264
address = "http://%s:%s/wd/hub" % (servername , port )
256
265
return webdriver .Remote (
@@ -265,39 +274,76 @@ def get_remote_driver(
265
274
if headless :
266
275
firefox_capabilities ['moz:firefoxOptions' ] = (
267
276
{'args' : ['-headless' ]})
277
+ for key in desired_caps .keys ():
278
+ firefox_capabilities [key ] = desired_caps [key ]
268
279
capabilities = firefox_capabilities
269
280
return webdriver .Remote (
270
281
command_executor = address ,
271
282
desired_capabilities = capabilities ,
272
283
browser_profile = profile )
273
284
elif browser_name == constants .Browser .INTERNET_EXPLORER :
285
+ capabilities = webdriver .DesiredCapabilities .INTERNETEXPLORER
286
+ for key in desired_caps .keys ():
287
+ capabilities [key ] = desired_caps [key ]
274
288
return webdriver .Remote (
275
289
command_executor = address ,
276
- desired_capabilities = (
277
- webdriver .DesiredCapabilities .INTERNETEXPLORER ))
290
+ desired_capabilities = capabilities )
278
291
elif browser_name == constants .Browser .EDGE :
292
+ capabilities = webdriver .DesiredCapabilities .EDGE
293
+ for key in desired_caps .keys ():
294
+ capabilities [key ] = desired_caps [key ]
279
295
return webdriver .Remote (
280
296
command_executor = address ,
281
- desired_capabilities = (
282
- webdriver .DesiredCapabilities .EDGE ))
297
+ desired_capabilities = capabilities )
283
298
elif browser_name == constants .Browser .SAFARI :
299
+ capabilities = webdriver .DesiredCapabilities .SAFARI
300
+ for key in desired_caps .keys ():
301
+ capabilities [key ] = desired_caps [key ]
284
302
return webdriver .Remote (
285
303
command_executor = address ,
286
- desired_capabilities = (
287
- webdriver .DesiredCapabilities .SAFARI ))
304
+ desired_capabilities = capabilities )
288
305
elif browser_name == constants .Browser .OPERA :
306
+ capabilities = webdriver .DesiredCapabilities .OPERA
307
+ for key in desired_caps .keys ():
308
+ capabilities [key ] = desired_caps [key ]
289
309
return webdriver .Remote (
290
310
command_executor = address ,
291
- desired_capabilities = (
292
- webdriver .DesiredCapabilities .OPERA ))
311
+ desired_capabilities = capabilities )
293
312
elif browser_name == constants .Browser .PHANTOM_JS :
313
+ capabilities = webdriver .DesiredCapabilities .PHANTOMJS
314
+ for key in desired_caps .keys ():
315
+ capabilities [key ] = desired_caps [key ]
294
316
with warnings .catch_warnings ():
295
317
# Ignore "PhantomJS has been deprecated" UserWarning
296
318
warnings .simplefilter ("ignore" , category = UserWarning )
297
319
return webdriver .Remote (
298
320
command_executor = address ,
299
- desired_capabilities = (
300
- webdriver .DesiredCapabilities .PHANTOMJS ))
321
+ desired_capabilities = capabilities )
322
+ elif browser_name == constants .Browser .ANDROID :
323
+ capabilities = webdriver .DesiredCapabilities .ANDROID
324
+ for key in desired_caps .keys ():
325
+ capabilities [key ] = desired_caps [key ]
326
+ return webdriver .Remote (
327
+ command_executor = address ,
328
+ desired_capabilities = capabilities )
329
+ elif browser_name == constants .Browser .IPHONE :
330
+ capabilities = webdriver .DesiredCapabilities .IPHONE
331
+ for key in desired_caps .keys ():
332
+ capabilities [key ] = desired_caps [key ]
333
+ return webdriver .Remote (
334
+ command_executor = address ,
335
+ desired_capabilities = capabilities )
336
+ elif browser_name == constants .Browser .IPAD :
337
+ capabilities = webdriver .DesiredCapabilities .IPAD
338
+ for key in desired_caps .keys ():
339
+ capabilities [key ] = desired_caps [key ]
340
+ return webdriver .Remote (
341
+ command_executor = address ,
342
+ desired_capabilities = capabilities )
343
+ elif browser_name == constants .Browser .REMOTE :
344
+ return webdriver .Remote (
345
+ command_executor = address ,
346
+ desired_capabilities = desired_caps )
301
347
302
348
303
349
def get_local_driver (
@@ -418,3 +464,6 @@ def get_local_driver(
418
464
return webdriver .Chrome (executable_path = LOCAL_CHROMEDRIVER )
419
465
else :
420
466
return webdriver .Chrome ()
467
+ else :
468
+ raise Exception (
469
+ "%s is not a valid browser option for this system!" % browser_name )
0 commit comments