@@ -135,8 +135,8 @@ def _add_chrome_disable_csp_extension(chrome_options):
135
135
def _set_chrome_options (
136
136
downloads_path , headless ,
137
137
proxy_string , proxy_auth , proxy_user , proxy_pass ,
138
- user_agent , disable_csp , enable_sync , incognito ,
139
- user_data_dir , extension_zip , extension_dir , servername ,
138
+ user_agent , disable_csp , enable_sync , no_sandbox , disable_gpu ,
139
+ incognito , user_data_dir , extension_zip , extension_dir , servername ,
140
140
mobile_emulator , device_width , device_height , device_pixel_ratio ):
141
141
chrome_options = webdriver .ChromeOptions ()
142
142
prefs = {
@@ -220,9 +220,10 @@ def _set_chrome_options(
220
220
# using Chrome's built-in headless mode. See link for details:
221
221
# https://bugs.chromium.org/p/chromium/issues/detail?id=706008
222
222
chrome_options .add_argument ("--headless" )
223
+ if headless or disable_gpu :
223
224
chrome_options .add_argument ("--disable-gpu" )
224
- if "linux" in PLATFORM :
225
- chrome_options .add_argument ("--no-sandbox" )
225
+ if ( headless and "linux" in PLATFORM ) or no_sandbox :
226
+ chrome_options .add_argument ("--no-sandbox" )
226
227
if "linux" in PLATFORM :
227
228
chrome_options .add_argument ("--disable-dev-shm-usage" )
228
229
return chrome_options
@@ -335,9 +336,10 @@ def validate_proxy_string(proxy_string):
335
336
def get_driver (browser_name , headless = False , use_grid = False ,
336
337
servername = 'localhost' , port = 4444 , proxy_string = None ,
337
338
user_agent = None , cap_file = None , disable_csp = None ,
338
- enable_sync = None , incognito = None , user_data_dir = None ,
339
- extension_zip = None , extension_dir = None , mobile_emulator = False ,
340
- device_width = None , device_height = None , device_pixel_ratio = None ):
339
+ enable_sync = None , no_sandbox = None , disable_gpu = None ,
340
+ incognito = None , user_data_dir = None , extension_zip = None ,
341
+ extension_dir = None , mobile_emulator = False , device_width = None ,
342
+ device_height = None , device_pixel_ratio = None ):
341
343
proxy_auth = False
342
344
proxy_user = None
343
345
proxy_pass = None
@@ -371,22 +373,23 @@ def get_driver(browser_name, headless=False, use_grid=False,
371
373
return get_remote_driver (
372
374
browser_name , headless , servername , port ,
373
375
proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
374
- cap_file , disable_csp , enable_sync , incognito , user_data_dir ,
375
- extension_zip , extension_dir , mobile_emulator ,
376
- device_width , device_height , device_pixel_ratio )
376
+ cap_file , disable_csp , enable_sync , no_sandbox , disable_gpu ,
377
+ incognito , user_data_dir , extension_zip , extension_dir ,
378
+ mobile_emulator , device_width , device_height , device_pixel_ratio )
377
379
else :
378
380
return get_local_driver (
379
381
browser_name , headless , servername ,
380
382
proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
381
- disable_csp , enable_sync , incognito , user_data_dir ,
382
- extension_zip , extension_dir , mobile_emulator ,
383
+ disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
384
+ user_data_dir , extension_zip , extension_dir , mobile_emulator ,
383
385
device_width , device_height , device_pixel_ratio )
384
386
385
387
386
388
def get_remote_driver (
387
389
browser_name , headless , servername , port , proxy_string , proxy_auth ,
388
390
proxy_user , proxy_pass , user_agent , cap_file , disable_csp ,
389
- enable_sync , incognito , user_data_dir , extension_zip , extension_dir ,
391
+ enable_sync , no_sandbox , disable_gpu , incognito , user_data_dir ,
392
+ extension_zip , extension_dir ,
390
393
mobile_emulator , device_width , device_height , device_pixel_ratio ):
391
394
downloads_path = download_helper .get_downloads_folder ()
392
395
download_helper .reset_downloads_folder ()
@@ -397,8 +400,8 @@ def get_remote_driver(
397
400
if browser_name == constants .Browser .GOOGLE_CHROME :
398
401
chrome_options = _set_chrome_options (
399
402
downloads_path , headless ,
400
- proxy_string , proxy_auth , proxy_user , proxy_pass ,
401
- user_agent , disable_csp , enable_sync , incognito ,
403
+ proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
404
+ disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
402
405
user_data_dir , extension_zip , extension_dir , servername ,
403
406
mobile_emulator , device_width , device_height , device_pixel_ratio )
404
407
capabilities = chrome_options .to_capabilities ()
@@ -509,8 +512,8 @@ def get_remote_driver(
509
512
def get_local_driver (
510
513
browser_name , headless , servername ,
511
514
proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
512
- disable_csp , enable_sync , incognito , user_data_dir ,
513
- extension_zip , extension_dir ,
515
+ disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
516
+ user_data_dir , extension_zip , extension_dir ,
514
517
mobile_emulator , device_width , device_height , device_pixel_ratio ):
515
518
'''
516
519
Spins up a new web browser and returns the driver.
@@ -598,9 +601,10 @@ def get_local_driver(
598
601
chrome_options = _set_chrome_options (
599
602
downloads_path , headless ,
600
603
proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
601
- disable_csp , enable_sync , incognito , user_data_dir ,
602
- extension_zip , extension_dir , servername , mobile_emulator ,
603
- device_width , device_height , device_pixel_ratio )
604
+ disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
605
+ user_data_dir , extension_zip , extension_dir , servername ,
606
+ mobile_emulator , device_width , device_height ,
607
+ device_pixel_ratio )
604
608
if LOCAL_EDGEDRIVER and os .path .exists (LOCAL_EDGEDRIVER ):
605
609
try :
606
610
make_driver_executable_if_not (LOCAL_EDGEDRIVER )
@@ -652,9 +656,10 @@ def get_local_driver(
652
656
chrome_options = _set_chrome_options (
653
657
downloads_path , headless ,
654
658
proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
655
- disable_csp , enable_sync , incognito , user_data_dir ,
656
- extension_zip , extension_dir , servername , mobile_emulator ,
657
- device_width , device_height , device_pixel_ratio )
659
+ disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
660
+ user_data_dir , extension_zip , extension_dir , servername ,
661
+ mobile_emulator , device_width , device_height ,
662
+ device_pixel_ratio )
658
663
if LOCAL_CHROMEDRIVER and os .path .exists (LOCAL_CHROMEDRIVER ):
659
664
try :
660
665
make_driver_executable_if_not (LOCAL_CHROMEDRIVER )
0 commit comments