Skip to content

Commit ea421b9

Browse files
authored
Merge pull request #1676 from seleniumbase/more-bug-fixes-and-updates
More bug fixes and updates
2 parents b246188 + 206f5da commit ea421b9

File tree

9 files changed

+511
-205
lines changed

9 files changed

+511
-205
lines changed

integrations/node_js/npm-shrinkwrap.json

Lines changed: 305 additions & 163 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

integrations/node_js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
"start": "node ./bin/www"
77
},
88
"dependencies": {
9-
"express": "~4.17.1"
9+
"express": "~4.18.2"
1010
}
1111
}

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.11.3"
2+
__version__ = "4.11.4"

seleniumbase/console_scripts/ReadMe.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ sbase install [DRIVER] [OPTIONS]
6262
sbase get chromedriver
6363
sbase get geckodriver
6464
sbase get edgedriver
65-
sbase get chromedriver 108
66-
sbase get chromedriver 108.0.5359.71
65+
sbase get chromedriver 109
66+
sbase get chromedriver 109.0.5414.74
6767
sbase get chromedriver latest
6868
sbase get chromedriver latest-1 # (Latest minus one)
6969
sbase get chromedriver -p

seleniumbase/console_scripts/run.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ def show_install_usage():
143143
print(" sbase get chromedriver")
144144
print(" sbase get geckodriver")
145145
print(" sbase get edgedriver")
146-
print(" sbase get chromedriver 108")
147-
print(" sbase get chromedriver 108.0.5359.71")
146+
print(" sbase get chromedriver 109")
147+
print(" sbase get chromedriver 109.0.5414.74")
148148
print(" sbase get chromedriver latest")
149149
print(" sbase get chromedriver latest-1")
150150
print(" sbase get chromedriver -p")

seleniumbase/console_scripts/sb_install.py

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
sbase get chromedriver
1515
sbase get geckodriver
1616
sbase get edgedriver
17-
sbase get chromedriver 108
18-
sbase get chromedriver 108.0.5359.71
17+
sbase get chromedriver 109
18+
sbase get chromedriver 109.0.5414.74
1919
sbase get chromedriver latest
2020
sbase get chromedriver latest-1 # (Latest minus one)
2121
sbase get chromedriver -p
@@ -59,7 +59,7 @@
5959
LOCAL_PATH = "/usr/local/bin/" # On Mac and Linux systems
6060
DEFAULT_CHROMEDRIVER_VERSION = "72.0.3626.69" # (If can't find LATEST_STABLE)
6161
DEFAULT_GECKODRIVER_VERSION = "v0.32.0"
62-
DEFAULT_EDGEDRIVER_VERSION = "108.0.1462.54" # (If can't find LATEST_STABLE)
62+
DEFAULT_EDGEDRIVER_VERSION = "109.0.1518.52" # (If can't find LATEST_STABLE)
6363
DEFAULT_OPERADRIVER_VERSION = "v.96.0.4664.45"
6464

6565

@@ -84,8 +84,8 @@ def invalid_run_command():
8484
exp += " sbase get chromedriver\n"
8585
exp += " sbase get geckodriver\n"
8686
exp += " sbase get edgedriver\n"
87-
exp += " sbase get chromedriver 108\n"
88-
exp += " sbase get chromedriver 108.0.5359.71\n"
87+
exp += " sbase get chromedriver 109\n"
88+
exp += " sbase get chromedriver 109.0.5414.74\n"
8989
exp += " sbase get chromedriver latest\n"
9090
exp += " sbase get chromedriver latest-1\n"
9191
exp += " sbase get chromedriver -p\n"
@@ -184,7 +184,6 @@ def main(override=None, intel_for_uc=None):
184184
c3 = colorama.Fore.BLUE + colorama.Back.LIGHTYELLOW_EX
185185
c4 = colorama.Fore.LIGHTRED_EX + colorama.Back.LIGHTWHITE_EX
186186
c5 = colorama.Fore.RED + colorama.Back.LIGHTWHITE_EX
187-
c6 = colorama.Fore.LIGHTYELLOW_EX + colorama.Back.BLUE
188187
cr = colorama.Style.RESET_ALL
189188
if "linux" in sys_plat:
190189
c1 = ""
@@ -243,6 +242,11 @@ def main(override=None, intel_for_uc=None):
243242
else:
244243
invalid_run_command()
245244
if "darwin" in sys_plat:
245+
if IS_ARM_MAC and not intel_for_uc:
246+
if use_version == "latest" or use_version == "latest-1":
247+
use_version = requests_get(last).text
248+
if use_version == "latest-1":
249+
use_version = str(int(use_version.split(".")[0]) - 1)
246250
if (
247251
IS_ARM_MAC
248252
and not intel_for_uc
@@ -299,12 +303,12 @@ def main(override=None, intel_for_uc=None):
299303
if get_latest:
300304
p_version = p_version + " " + c2 + "(Latest)" + cr
301305
else:
302-
n_l_s = "NOT Latest"
306+
n_l_s = "Not Latest"
303307
try:
304308
int_use_version = int(use_version.split(".")[0])
305309
int_latest_version = int(latest_version.split(".")[0])
306310
if int_use_version > int_latest_version:
307-
n_l_s = "NOT Latest Stable"
311+
n_l_s = "Not Latest Stable"
308312
except Exception:
309313
pass
310314
not_latest = c5 + "(" + c4 + n_l_s + c5 + ")" + cr
@@ -314,12 +318,7 @@ def main(override=None, intel_for_uc=None):
314318
else:
315319
raise Exception("Could not find chromedriver to download!\n")
316320
if not get_latest:
317-
to_upgrade = " " + c3 + "To upgrade" + cr
318-
run_this = c3 + "run this" + cr
319-
install_sb = c6 + "sbase get chromedriver latest" + cr
320-
print("\n %s to the latest version of chromedriver," % to_upgrade)
321-
print(" %s: >>> %s" % (run_this, install_sb))
322-
print(" (Requires the latest version of Chrome installed)")
321+
pass # Previously recommended: "sbase get chromedriver latest"
323322
elif name == "geckodriver" or name == "firefoxdriver":
324323
use_version = DEFAULT_GECKODRIVER_VERSION
325324
found_geckodriver = False
@@ -381,6 +380,33 @@ def main(override=None, intel_for_uc=None):
381380
"https://msedgewebdriverstorage.blob.core.windows.net"
382381
"/edgewebdriver/LATEST_STABLE"
383382
)
383+
384+
if (
385+
selenium4_or_newer
386+
and not override
387+
and (
388+
num_args == 3
389+
or (num_args == 4 and "-p" in sys.argv[3].lower())
390+
)
391+
):
392+
use_version = "latest"
393+
major_edge_version = None
394+
try:
395+
from seleniumbase.core import detect_b_ver
396+
397+
br_app = "edge"
398+
major_edge_version = (
399+
detect_b_ver.get_browser_version_from_os(br_app)
400+
).split(".")[0]
401+
if int(major_edge_version) < 80:
402+
major_edge_version = None
403+
except Exception:
404+
major_edge_version = None
405+
if major_edge_version and major_edge_version.isnumeric():
406+
num_args += 1
407+
sys.argv.insert(3, major_edge_version)
408+
use_version = major_edge_version
409+
384410
get_latest = False
385411
if num_args == 3:
386412
get_latest = True

seleniumbase/core/browser_launcher.py

Lines changed: 84 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
"\nWarning: 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+
"\nWarning: 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("\nWarning: 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-
"\nWarning: 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:

seleniumbase/core/detect_b_ver.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,12 @@ class OSType(object):
4141

4242
class ChromeType(object):
4343
GOOGLE = "google-chrome"
44+
MSEDGE = "edge"
4445

4546

4647
PATTERN = {
4748
ChromeType.GOOGLE: r"\d+\.\d+\.\d+",
49+
ChromeType.MSEDGE: r"\d+\.\d+\.\d+",
4850
}
4951

5052

@@ -133,6 +135,63 @@ def get_browser_version_from_os(browser_type=None):
133135
r'\CurrentVersion\Uninstall\Google Chrome").version',
134136
),
135137
},
138+
ChromeType.MSEDGE: {
139+
OSType.LINUX: linux_browser_apps_to_cmd(
140+
"microsoft-edge",
141+
"microsoft-edge-stable",
142+
"microsoft-edge-beta",
143+
"microsoft-edge-dev",
144+
),
145+
OSType.MAC: r"/Applications/Microsoft\ Edge.app"
146+
r"/Contents/MacOS/Microsoft\ Edge --version",
147+
OSType.WIN: windows_browser_apps_to_cmd(
148+
# stable edge
149+
r'(Get-Item -Path "$env:PROGRAMFILES\Microsoft\Edge'
150+
r'\Application\msedge.exe").VersionInfo.FileVersion',
151+
r'(Get-Item -Path "$env:PROGRAMFILES (x86)\Microsoft'
152+
r'\Edge\Application\msedge.exe").VersionInfo.FileVersion',
153+
r'(Get-ItemProperty -Path Registry::"HKCU\SOFTWARE'
154+
r'\Microsoft\Edge\BLBeacon").version',
155+
r'(Get-ItemProperty -Path Registry::"HKLM\SOFTWARE'
156+
r'\Microsoft\EdgeUpdate\Clients'
157+
r'\{56EB18F8-8008-4CBD-B6D2-8C97FE7E9062}").pv',
158+
# beta edge
159+
r'(Get-Item -Path "$env:LOCALAPPDATA\Microsoft\Edge Beta'
160+
r'\Application\msedge.exe").VersionInfo.FileVersion',
161+
r'(Get-Item -Path "$env:PROGRAMFILES\Microsoft\Edge Beta'
162+
r'\Application\msedge.exe").VersionInfo.FileVersion',
163+
r'(Get-Item -Path "$env:PROGRAMFILES (x86)\Microsoft\Edge Beta'
164+
r'\Application\msedge.exe").VersionInfo.FileVersion',
165+
r'(Get-ItemProperty -Path Registry::"HKCU\SOFTWARE\Microsoft'
166+
r'\Edge Beta\BLBeacon").version',
167+
# dev edge
168+
r'(Get-Item -Path "$env:LOCALAPPDATA\Microsoft\Edge Dev'
169+
r'\Application\msedge.exe").VersionInfo.FileVersion',
170+
r'(Get-Item -Path "$env:PROGRAMFILES\Microsoft\Edge Dev'
171+
r'\Application\msedge.exe").VersionInfo.FileVersion',
172+
r'(Get-Item -Path "$env:PROGRAMFILES (x86)\Microsoft\Edge Dev'
173+
r'\Application\msedge.exe").VersionInfo.FileVersion',
174+
r'(Get-ItemProperty -Path Registry::"HKCU\SOFTWARE\Microsoft'
175+
r'\Edge Dev\BLBeacon").version',
176+
# canary edge
177+
r'(Get-Item -Path "$env:LOCALAPPDATA\Microsoft\Edge SxS'
178+
r'\Application\msedge.exe").VersionInfo.FileVersion',
179+
r'(Get-ItemProperty -Path Registry::"HKCU\SOFTWARE'
180+
r'\Microsoft\Edge SxS\BLBeacon").version',
181+
# highest edge
182+
r"(Get-Item (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft"
183+
r"\Windows\CurrentVersion\App Paths\msedge.exe')."
184+
r"'(Default)').VersionInfo.ProductVersion",
185+
r"[System.Diagnostics.FileVersionInfo]::GetVersionInfo(("
186+
r"Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows"
187+
r"\CurrentVersion\App Paths\msedge.exe')."
188+
r"'(Default)').ProductVersion",
189+
r"Get-AppxPackage -Name *MicrosoftEdge.* | Foreach Version",
190+
r'(Get-ItemProperty -Path Registry::"HKLM\SOFTWARE\Wow6432Node'
191+
r'\Microsoft\Windows\CurrentVersion\Uninstall'
192+
r'\Microsoft Edge").version',
193+
),
194+
},
136195
}
137196
try:
138197
cmd_mapping = cmd_mapping[browser_type][os_name()]

0 commit comments

Comments
 (0)