@@ -83,7 +83,8 @@ def _add_chrome_proxy_extension(
83
83
84
84
85
85
def _set_chrome_options (
86
- downloads_path , proxy_string , proxy_auth , proxy_user , proxy_pass ):
86
+ downloads_path , proxy_string , proxy_auth ,
87
+ proxy_user , proxy_pass , user_agent ):
87
88
chrome_options = webdriver .ChromeOptions ()
88
89
prefs = {
89
90
"download.default_directory" : downloads_path ,
@@ -100,6 +101,8 @@ def _set_chrome_options(
100
101
chrome_options .add_argument ("--allow-file-access-from-files" )
101
102
chrome_options .add_argument ("--allow-insecure-localhost" )
102
103
chrome_options .add_argument ("--allow-running-insecure-content" )
104
+ if user_agent :
105
+ chrome_options .add_argument ("--user-agent=%s" % user_agent )
103
106
chrome_options .add_argument ("--disable-infobars" )
104
107
chrome_options .add_argument ("--disable-save-password-bubble" )
105
108
chrome_options .add_argument ("--disable-single-click-autofill" )
@@ -113,7 +116,7 @@ def _set_chrome_options(
113
116
return chrome_options
114
117
115
118
116
- def _create_firefox_profile (downloads_path , proxy_string ):
119
+ def _create_firefox_profile (downloads_path , proxy_string , user_agent ):
117
120
profile = webdriver .FirefoxProfile ()
118
121
profile .accept_untrusted_certs = True
119
122
profile .set_preference ("reader.parse-on-load.enabled" , False )
@@ -128,6 +131,8 @@ def _create_firefox_profile(downloads_path, proxy_string):
128
131
profile .set_preference ("network.proxy.http_port" , int (proxy_port ))
129
132
profile .set_preference ("network.proxy.ssl" , proxy_server )
130
133
profile .set_preference ("network.proxy.ssl_port" , int (proxy_port ))
134
+ if user_agent :
135
+ profile .set_preference ("general.useragent.override" , user_agent )
131
136
profile .set_preference (
132
137
"security.mixed_content.block_active_content" , False )
133
138
profile .set_preference ("security.csp.enable" , False )
@@ -195,7 +200,7 @@ def validate_proxy_string(proxy_string):
195
200
196
201
def get_driver (browser_name , headless = False , use_grid = False ,
197
202
servername = 'localhost' , port = 4444 , proxy_string = None ,
198
- cap_file = None ):
203
+ user_agent = None , cap_file = None ):
199
204
proxy_auth = False
200
205
proxy_user = None
201
206
proxy_pass = None
@@ -224,27 +229,26 @@ def get_driver(browser_name, headless=False, use_grid=False,
224
229
if use_grid :
225
230
return get_remote_driver (
226
231
browser_name , headless , servername , port , proxy_string , proxy_auth ,
227
- proxy_user , proxy_pass , cap_file )
232
+ proxy_user , proxy_pass , user_agent , cap_file )
228
233
else :
229
234
return get_local_driver (
230
235
browser_name , headless , proxy_string , proxy_auth ,
231
- proxy_user , proxy_pass )
236
+ proxy_user , proxy_pass , user_agent )
232
237
233
238
234
239
def get_remote_driver (
235
240
browser_name , headless , servername , port , proxy_string , proxy_auth ,
236
- proxy_user , proxy_pass , cap_file ):
241
+ proxy_user , proxy_pass , user_agent , cap_file ):
237
242
downloads_path = download_helper .get_downloads_folder ()
238
243
download_helper .reset_downloads_folder ()
239
244
address = "http://%s:%s/wd/hub" % (servername , port )
240
245
desired_caps = {}
241
246
if cap_file :
242
247
desired_caps = capabilities_parser .get_desired_capabilities (cap_file )
243
-
244
248
if browser_name == constants .Browser .GOOGLE_CHROME :
245
249
chrome_options = _set_chrome_options (
246
250
downloads_path , proxy_string , proxy_auth ,
247
- proxy_user , proxy_pass )
251
+ proxy_user , proxy_pass , user_agent )
248
252
if headless :
249
253
if not proxy_auth :
250
254
# Headless Chrome doesn't support extensions, which are
@@ -264,7 +268,8 @@ def get_remote_driver(
264
268
elif browser_name == constants .Browser .FIREFOX :
265
269
try :
266
270
# Use Geckodriver for Firefox if it's on the PATH
267
- profile = _create_firefox_profile (downloads_path , proxy_string )
271
+ profile = _create_firefox_profile (
272
+ downloads_path , proxy_string , user_agent )
268
273
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
269
274
firefox_capabilities ['marionette' ] = True
270
275
if headless :
@@ -280,7 +285,8 @@ def get_remote_driver(
280
285
browser_profile = profile )
281
286
except WebDriverException :
282
287
# Don't use Geckodriver: Only works for old versions of Firefox
283
- profile = _create_firefox_profile (downloads_path , proxy_string )
288
+ profile = _create_firefox_profile (
289
+ downloads_path , proxy_string , user_agent )
284
290
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
285
291
firefox_capabilities ['marionette' ] = False
286
292
if headless :
@@ -360,7 +366,7 @@ def get_remote_driver(
360
366
361
367
def get_local_driver (
362
368
browser_name , headless , proxy_string , proxy_auth ,
363
- proxy_user , proxy_pass ):
369
+ proxy_user , proxy_pass , user_agent ):
364
370
'''
365
371
Spins up a new web browser and returns the driver.
366
372
Can also be used to spin up additional browsers for the same test.
@@ -372,7 +378,8 @@ def get_local_driver(
372
378
try :
373
379
try :
374
380
# Use Geckodriver for Firefox if it's on the PATH
375
- profile = _create_firefox_profile (downloads_path , proxy_string )
381
+ profile = _create_firefox_profile (
382
+ downloads_path , proxy_string , user_agent )
376
383
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
377
384
firefox_capabilities ['marionette' ] = True
378
385
options = webdriver .FirefoxOptions ()
@@ -392,7 +399,8 @@ def get_local_driver(
392
399
options = options )
393
400
except WebDriverException :
394
401
# Don't use Geckodriver: Only works for old versions of Firefox
395
- profile = _create_firefox_profile (downloads_path , proxy_string )
402
+ profile = _create_firefox_profile (
403
+ downloads_path , proxy_string , user_agent )
396
404
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
397
405
firefox_capabilities ['marionette' ] = False
398
406
firefox_driver = webdriver .Firefox (
@@ -451,7 +459,7 @@ def get_local_driver(
451
459
try :
452
460
chrome_options = _set_chrome_options (
453
461
downloads_path , proxy_string , proxy_auth ,
454
- proxy_user , proxy_pass )
462
+ proxy_user , proxy_pass , user_agent )
455
463
if headless :
456
464
# Headless Chrome doesn't support extensions, which are
457
465
# required when using a proxy server that has authentication.
0 commit comments