@@ -570,7 +570,7 @@ def _set_chrome_options(
570570 # Only change it if not "normal", which is the default.
571571 chrome_options .page_load_strategy = settings .PAGE_LOAD_STRATEGY .lower ()
572572 if headless2 :
573- chrome_options . add_argument ( "--headless=chrome" )
573+ pass # Processed After Version Check
574574 elif headless :
575575 chrome_options .add_argument ("--headless" )
576576 if (settings .DISABLE_CSP_ON_CHROME or disable_csp ) and not headless :
@@ -646,7 +646,7 @@ def _set_chrome_options(
646646 chrome_options .add_argument ("--remote-debugging-port=9222" )
647647 if swiftshader :
648648 chrome_options .add_argument ("--use-gl=swiftshader" )
649- else :
649+ elif not is_using_uc ( undetectable , browser_name ) :
650650 chrome_options .add_argument ("--disable-gpu" )
651651 if "linux" in PLATFORM :
652652 chrome_options .add_argument ("--disable-dev-shm-usage" )
@@ -673,7 +673,7 @@ def _set_chrome_options(
673673 chrome_options .add_argument ("--disable-prompt-on-repost" )
674674 chrome_options .add_argument ("--dns-prefetch-disable" )
675675 chrome_options .add_argument ("--disable-translate" )
676- if not enable_3d_apis :
676+ if not enable_3d_apis and not is_using_uc ( undetectable , browser_name ) :
677677 chrome_options .add_argument ("--disable-3d-apis" )
678678 if headless or headless2 or is_using_uc (undetectable , browser_name ):
679679 chrome_options .add_argument ("--disable-renderer-backgrounding" )
@@ -1932,37 +1932,86 @@ def get_local_driver(
19321932 "profile.managed_default_content_settings.popups" : 0 ,
19331933 "profile.default_content_setting_values.automatic_downloads" : 1 ,
19341934 }
1935- if LOCAL_EDGEDRIVER and os .path .exists (LOCAL_EDGEDRIVER ):
1935+ use_version = "latest"
1936+ major_edge_version = None
1937+ try :
1938+ from seleniumbase .core import detect_b_ver
1939+
1940+ br_app = "edge"
1941+ major_edge_version = (
1942+ detect_b_ver .get_browser_version_from_os (br_app )
1943+ ).split ("." )[0 ]
1944+ if int (major_edge_version ) < 80 :
1945+ major_edge_version = None
1946+ except Exception :
1947+ major_edge_version = None
1948+ if major_edge_version :
1949+ use_version = major_edge_version
1950+ driver_version = None
1951+ if os .path .exists (LOCAL_EDGEDRIVER ):
19361952 try :
1937- make_driver_executable_if_not (LOCAL_EDGEDRIVER )
1938- except Exception as e :
1939- logging .debug (
1940- "\n Warning: Could not make edgedriver"
1941- " executable: %s" % e
1953+ output = subprocess .check_output (
1954+ "%s --version" % LOCAL_EDGEDRIVER , shell = True
19421955 )
1943- elif not edgedriver_on_path ():
1956+ if IS_WINDOWS :
1957+ output = output .decode ("latin1" )
1958+ else :
1959+ output = output .decode ("utf-8" )
1960+ if output .split (" " )[0 ] == "MSEdgeDriver" :
1961+ # MSEdgeDriver VERSION
1962+ output = output .split (" " )[1 ].split ("." )[0 ]
1963+ elif output .split (" " )[0 ] == "Microsoft" :
1964+ # Microsoft Edge WebDriver VERSION
1965+ output = output .split (" " )[3 ].split ("." )[0 ]
1966+ else :
1967+ output = 0
1968+ if int (output ) >= 2 :
1969+ driver_version = output
1970+ except Exception :
1971+ pass
1972+ edgedriver_upgrade_needed = False
1973+ local_edgedriver_exists = False
1974+ if LOCAL_EDGEDRIVER and os .path .exists (LOCAL_EDGEDRIVER ):
1975+ local_edgedriver_exists = True
1976+ if (
1977+ use_version != "latest"
1978+ and driver_version
1979+ and use_version != driver_version
1980+ ):
1981+ edgedriver_upgrade_needed = True
1982+ else :
1983+ try :
1984+ make_driver_executable_if_not (LOCAL_EDGEDRIVER )
1985+ except Exception as e :
1986+ logging .debug (
1987+ "\n Warning: Could not make edgedriver"
1988+ " executable: %s" % e
1989+ )
1990+ if not local_edgedriver_exists or edgedriver_upgrade_needed :
19441991 from seleniumbase .console_scripts import sb_install
19451992
19461993 args = " " .join (sys .argv )
19471994 if not ("-n" in sys .argv or " -n=" in args or args == "-c" ):
19481995 # (Not multithreaded)
1996+ msg = "Microsoft Edge Driver not found."
1997+ if edgedriver_upgrade_needed :
1998+ msg = "Microsoft Edge Driver update needed."
19491999 sys_args = sys .argv # Save a copy of current sys args
1950- print ("\n Warning: msedgedriver not found. Getting it now:" )
1951- sb_install .main (override = "edgedriver" )
2000+ print ("\n %s Getting it now:" % msg )
2001+ sb_install .main (override = "edgedriver %s" % use_version )
19522002 sys .argv = sys_args # Put back the original sys args
19532003 else :
19542004 edgedriver_fixing_lock = fasteners .InterProcessLock (
19552005 constants .MultiBrowser .DRIVER_FIXING_LOCK
19562006 )
19572007 with edgedriver_fixing_lock :
1958- if not edgedriver_on_path ():
1959- sys_args = sys .argv # Save a copy of sys args
1960- print (
1961- "\n Warning: msedgedriver not found. "
1962- "Getting it now:"
1963- )
1964- sb_install .main (override = "edgedriver" )
1965- sys .argv = sys_args # Put back original sys args
2008+ msg = "Microsoft Edge Driver not found."
2009+ if edgedriver_upgrade_needed :
2010+ msg = "Microsoft Edge Driver update needed."
2011+ sys_args = sys .argv # Save a copy of current sys args
2012+ print ("\n %s Getting it now:" % msg )
2013+ sb_install .main (override = "edgedriver %s" % use_version )
2014+ sys .argv = sys_args # Put back the original sys args
19662015
19672016 # For Microsoft Edge (Chromium) version 80 or higher
19682017 if selenium4_or_newer :
@@ -2005,7 +2054,13 @@ def get_local_driver(
20052054 if guest_mode :
20062055 edge_options .add_argument ("--guest" )
20072056 if headless2 :
2008- edge_options .add_argument ("--headless=chrome" )
2057+ try :
2058+ if use_version == "latest" or int (use_version ) >= 109 :
2059+ edge_options .add_argument ("--headless=new" )
2060+ else :
2061+ edge_options .add_argument ("--headless=chrome" )
2062+ except Exception :
2063+ edge_options .add_argument ("--headless=new" )
20092064 elif headless :
20102065 edge_options .add_argument ("--headless" )
20112066 if mobile_emulator :
@@ -2448,6 +2503,14 @@ def get_local_driver(
24482503 driver_version = output
24492504 except Exception :
24502505 pass
2506+ if headless2 :
2507+ try :
2508+ if use_version == "latest" or int (use_version ) >= 109 :
2509+ chrome_options .add_argument ("--headless=new" )
2510+ else :
2511+ chrome_options .add_argument ("--headless=chrome" )
2512+ except Exception :
2513+ chrome_options .add_argument ("--headless=new" )
24512514 disable_build_check = False
24522515 uc_driver_version = None
24532516 if IS_ARM_MAC :
0 commit comments