@@ -135,8 +135,8 @@ def _add_chrome_disable_csp_extension(chrome_options):
135135def _set_chrome_options (
136136 downloads_path , headless ,
137137 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 ,
140140 mobile_emulator , device_width , device_height , device_pixel_ratio ):
141141 chrome_options = webdriver .ChromeOptions ()
142142 prefs = {
@@ -220,9 +220,10 @@ def _set_chrome_options(
220220 # using Chrome's built-in headless mode. See link for details:
221221 # https://bugs.chromium.org/p/chromium/issues/detail?id=706008
222222 chrome_options .add_argument ("--headless" )
223+ if headless or disable_gpu :
223224 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" )
226227 if "linux" in PLATFORM :
227228 chrome_options .add_argument ("--disable-dev-shm-usage" )
228229 return chrome_options
@@ -335,9 +336,10 @@ def validate_proxy_string(proxy_string):
335336def get_driver (browser_name , headless = False , use_grid = False ,
336337 servername = 'localhost' , port = 4444 , proxy_string = None ,
337338 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 ):
341343 proxy_auth = False
342344 proxy_user = None
343345 proxy_pass = None
@@ -371,22 +373,23 @@ def get_driver(browser_name, headless=False, use_grid=False,
371373 return get_remote_driver (
372374 browser_name , headless , servername , port ,
373375 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 )
377379 else :
378380 return get_local_driver (
379381 browser_name , headless , servername ,
380382 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 ,
383385 device_width , device_height , device_pixel_ratio )
384386
385387
386388def get_remote_driver (
387389 browser_name , headless , servername , port , proxy_string , proxy_auth ,
388390 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 ,
390393 mobile_emulator , device_width , device_height , device_pixel_ratio ):
391394 downloads_path = download_helper .get_downloads_folder ()
392395 download_helper .reset_downloads_folder ()
@@ -397,8 +400,8 @@ def get_remote_driver(
397400 if browser_name == constants .Browser .GOOGLE_CHROME :
398401 chrome_options = _set_chrome_options (
399402 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 ,
402405 user_data_dir , extension_zip , extension_dir , servername ,
403406 mobile_emulator , device_width , device_height , device_pixel_ratio )
404407 capabilities = chrome_options .to_capabilities ()
@@ -509,8 +512,8 @@ def get_remote_driver(
509512def get_local_driver (
510513 browser_name , headless , servername ,
511514 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 ,
514517 mobile_emulator , device_width , device_height , device_pixel_ratio ):
515518 '''
516519 Spins up a new web browser and returns the driver.
@@ -598,9 +601,10 @@ def get_local_driver(
598601 chrome_options = _set_chrome_options (
599602 downloads_path , headless ,
600603 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 )
604608 if LOCAL_EDGEDRIVER and os .path .exists (LOCAL_EDGEDRIVER ):
605609 try :
606610 make_driver_executable_if_not (LOCAL_EDGEDRIVER )
@@ -652,9 +656,10 @@ def get_local_driver(
652656 chrome_options = _set_chrome_options (
653657 downloads_path , headless ,
654658 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 )
658663 if LOCAL_CHROMEDRIVER and os .path .exists (LOCAL_CHROMEDRIVER ):
659664 try :
660665 make_driver_executable_if_not (LOCAL_CHROMEDRIVER )
0 commit comments