@@ -449,6 +449,8 @@ def _set_chrome_options(
449
449
chrome_options = undetected .ChromeOptions ()
450
450
elif browser_name == constants .Browser .OPERA :
451
451
chrome_options = webdriver .opera .options .Options ()
452
+ elif browser_name == constants .Browser .EDGE :
453
+ chrome_options = webdriver .edge .options .Options ()
452
454
453
455
prefs = {}
454
456
prefs ["download.default_directory" ] = downloads_path
@@ -1592,13 +1594,99 @@ def get_remote_driver(
1592
1594
desired_capabilities = capabilities ,
1593
1595
)
1594
1596
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
1596
1645
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 ])
1599
1687
return webdriver .Remote (
1600
1688
command_executor = address ,
1601
- options = remote_options ,
1689
+ options = edge_options ,
1602
1690
)
1603
1691
else :
1604
1692
warnings .simplefilter ("ignore" , category = DeprecationWarning )
0 commit comments