Skip to content

Commit 7192d4d

Browse files
Set Edge options via Chrome options for Remote EdgeDriver
1 parent f015121 commit 7192d4d

File tree

1 file changed

+92
-4
lines changed

1 file changed

+92
-4
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 92 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,8 @@ def _set_chrome_options(
449449
chrome_options = undetected.ChromeOptions()
450450
elif browser_name == constants.Browser.OPERA:
451451
chrome_options = webdriver.opera.options.Options()
452+
elif browser_name == constants.Browser.EDGE:
453+
chrome_options = webdriver.edge.options.Options()
452454

453455
prefs = {}
454456
prefs["download.default_directory"] = downloads_path
@@ -1592,13 +1594,99 @@ def get_remote_driver(
15921594
desired_capabilities=capabilities,
15931595
)
15941596
elif browser_name == constants.Browser.EDGE:
1595-
capabilities = webdriver.DesiredCapabilities.EDGE
1597+
edge_options = _set_chrome_options(
1598+
browser_name,
1599+
downloads_path,
1600+
headless,
1601+
locale_code,
1602+
proxy_string,
1603+
proxy_auth,
1604+
proxy_user,
1605+
proxy_pass,
1606+
proxy_bypass_list,
1607+
proxy_pac_url,
1608+
user_agent,
1609+
recorder_ext,
1610+
disable_js,
1611+
disable_csp,
1612+
enable_ws,
1613+
enable_sync,
1614+
use_auto_ext,
1615+
undetectable,
1616+
uc_cdp_events,
1617+
uc_subprocess,
1618+
no_sandbox,
1619+
disable_gpu,
1620+
headless2,
1621+
incognito,
1622+
guest_mode,
1623+
devtools,
1624+
remote_debug,
1625+
enable_3d_apis,
1626+
swiftshader,
1627+
ad_block_on,
1628+
block_images,
1629+
do_not_track,
1630+
chromium_arg,
1631+
user_data_dir,
1632+
extension_zip,
1633+
extension_dir,
1634+
binary_location,
1635+
page_load_strategy,
1636+
use_wire,
1637+
external_pdf,
1638+
servername,
1639+
mobile_emulator,
1640+
device_width,
1641+
device_height,
1642+
device_pixel_ratio,
1643+
)
1644+
capabilities = None
15961645
if selenium4_or_newer:
1597-
remote_options = ArgOptions()
1598-
remote_options.set_capability("cloud:options", desired_caps)
1646+
capabilities = webdriver.EdgeOptions().to_capabilities()
1647+
else:
1648+
capabilities = chrome_options.to_capabilities()
1649+
# Set custom desired capabilities
1650+
selenoid = False
1651+
selenoid_options = None
1652+
screen_resolution = None
1653+
browser_version = None
1654+
platform_name = None
1655+
extension_capabilities = {}
1656+
for key in desired_caps.keys():
1657+
capabilities[key] = desired_caps[key]
1658+
if key == "selenoid:options":
1659+
selenoid = True
1660+
selenoid_options = desired_caps[key]
1661+
elif key == "screenResolution":
1662+
screen_resolution = desired_caps[key]
1663+
elif key == "version" or key == "browserVersion":
1664+
browser_version = desired_caps[key]
1665+
elif key == "platform" or key == "platformName":
1666+
platform_name = desired_caps[key]
1667+
elif re.match("[a-zA-Z0-9]*:[a-zA-Z0-9]*", key):
1668+
extension_capabilities[key] = desired_caps[key]
1669+
if selenium4_or_newer:
1670+
edge_options.set_capability("cloud:options", capabilities)
1671+
if selenoid:
1672+
snops = selenoid_options
1673+
edge_options.set_capability("selenoid:options", snops)
1674+
if screen_resolution:
1675+
scres = screen_resolution
1676+
edge_options.set_capability("screenResolution", scres)
1677+
if browser_version:
1678+
br_vers = browser_version
1679+
edge_options.set_capability("browserVersion", br_vers)
1680+
if platform_name:
1681+
plat_name = platform_name
1682+
edge_options.set_capability("platformName", plat_name)
1683+
if extension_capabilities:
1684+
for key in extension_capabilities:
1685+
ext_caps = extension_capabilities
1686+
edge_options.set_capability(key, ext_caps[key])
15991687
return webdriver.Remote(
16001688
command_executor=address,
1601-
options=remote_options,
1689+
options=edge_options,
16021690
)
16031691
else:
16041692
warnings.simplefilter("ignore", category=DeprecationWarning)

0 commit comments

Comments
 (0)