Skip to content

Commit 914aaa6

Browse files
committed
Allow more customizations for Grid capabilities
1 parent 6cbaaf3 commit 914aaa6

File tree

1 file changed

+93
-6
lines changed

1 file changed

+93
-6
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 93 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@ def _set_chrome_options(
281281
device_pixel_ratio,
282282
):
283283
chrome_options = webdriver.ChromeOptions()
284+
if browser_name == constants.Browser.OPERA:
285+
chrome_options = webdriver.opera.options.Options()
284286
prefs = {
285287
"download.default_directory": downloads_path,
286288
"local_discovery.notifications_enabled": False,
@@ -1058,6 +1060,7 @@ def get_remote_driver(
10581060
selenoid = False
10591061
selenoid_options = None
10601062
screen_resolution = None
1063+
browser_version = None
10611064
platform_name = None
10621065
for key in desired_caps.keys():
10631066
capabilities[key] = desired_caps[key]
@@ -1066,6 +1069,8 @@ def get_remote_driver(
10661069
selenoid_options = desired_caps[key]
10671070
elif key == "screenResolution":
10681071
screen_resolution = desired_caps[key]
1072+
elif key == "version" or key == "browserVersion":
1073+
browser_version = desired_caps[key]
10691074
elif key == "platform" or key == "platformName":
10701075
platform_name = desired_caps[key]
10711076
if selenium4:
@@ -1076,6 +1081,9 @@ def get_remote_driver(
10761081
if screen_resolution:
10771082
scres = screen_resolution
10781083
firefox_options.set_capability("screenResolution", scres)
1084+
if browser_version:
1085+
br_vers = browser_version
1086+
firefox_options.set_capability("browserVersion", br_vers)
10791087
if platform_name:
10801088
plat_name = platform_name
10811089
firefox_options.set_capability("platformName", plat_name)
@@ -1149,19 +1157,86 @@ def get_remote_driver(
11491157
keep_alive=True,
11501158
)
11511159
elif browser_name == constants.Browser.OPERA:
1152-
capabilities = webdriver.DesiredCapabilities.OPERA
1160+
opera_options = _set_chrome_options(
1161+
browser_name,
1162+
downloads_path,
1163+
headless,
1164+
locale_code,
1165+
proxy_string,
1166+
proxy_auth,
1167+
proxy_user,
1168+
proxy_pass,
1169+
proxy_bypass_list,
1170+
user_agent,
1171+
recorder_ext,
1172+
disable_csp,
1173+
enable_ws,
1174+
enable_sync,
1175+
use_auto_ext,
1176+
no_sandbox,
1177+
disable_gpu,
1178+
incognito,
1179+
guest_mode,
1180+
devtools,
1181+
remote_debug,
1182+
swiftshader,
1183+
ad_block_on,
1184+
block_images,
1185+
chromium_arg,
1186+
user_data_dir,
1187+
extension_zip,
1188+
extension_dir,
1189+
external_pdf,
1190+
servername,
1191+
mobile_emulator,
1192+
device_width,
1193+
device_height,
1194+
device_pixel_ratio,
1195+
)
1196+
capabilities = None
11531197
if selenium4:
1154-
remote_options = ArgOptions()
1155-
remote_options.set_capability("cloud:options", desired_caps)
1198+
capabilities = webdriver.DesiredCapabilities.OPERA
1199+
else:
1200+
opera_options = webdriver.opera.options.Options()
1201+
capabilities = opera_options.to_capabilities()
1202+
# Set custom desired capabilities
1203+
selenoid = False
1204+
selenoid_options = None
1205+
screen_resolution = None
1206+
browser_version = None
1207+
platform_name = None
1208+
for key in desired_caps.keys():
1209+
capabilities[key] = desired_caps[key]
1210+
if key == "selenoid:options":
1211+
selenoid = True
1212+
selenoid_options = desired_caps[key]
1213+
elif key == "screenResolution":
1214+
screen_resolution = desired_caps[key]
1215+
elif key == "version" or key == "browserVersion":
1216+
browser_version = desired_caps[key]
1217+
elif key == "platform" or key == "platformName":
1218+
platform_name = desired_caps[key]
1219+
if selenium4:
1220+
opera_options.set_capability("cloud:options", capabilities)
1221+
if selenoid:
1222+
snops = selenoid_options
1223+
opera_options.set_capability("selenoid:options", snops)
1224+
if screen_resolution:
1225+
scres = screen_resolution
1226+
opera_options.set_capability("screenResolution", scres)
1227+
if browser_version:
1228+
br_vers = browser_version
1229+
opera_options.set_capability("browserVersion", br_vers)
1230+
if platform_name:
1231+
plat_name = platform_name
1232+
opera_options.set_capability("platformName", plat_name)
11561233
return webdriver.Remote(
11571234
command_executor=address,
1158-
options=remote_options,
1235+
options=opera_options,
11591236
keep_alive=True,
11601237
)
11611238
else:
11621239
warnings.simplefilter("ignore", category=DeprecationWarning)
1163-
for key in desired_caps.keys():
1164-
capabilities[key] = desired_caps[key]
11651240
return webdriver.Remote(
11661241
command_executor=address,
11671242
desired_capabilities=capabilities,
@@ -1246,12 +1321,18 @@ def get_remote_driver(
12461321
selenoid = False
12471322
selenoid_options = None
12481323
screen_resolution = None
1324+
browser_version = None
1325+
platform_name = None
12491326
for key in desired_caps.keys():
12501327
if key == "selenoid:options":
12511328
selenoid = True
12521329
selenoid_options = desired_caps[key]
12531330
elif key == "screenResolution":
12541331
screen_resolution = desired_caps[key]
1332+
elif key == "version" or key == "browserVersion":
1333+
browser_version = desired_caps[key]
1334+
elif key == "platform" or key == "platformName":
1335+
platform_name = desired_caps[key]
12551336
if selenium4:
12561337
remote_options = ArgOptions()
12571338
remote_options.set_capability("cloud:options", desired_caps)
@@ -1261,6 +1342,12 @@ def get_remote_driver(
12611342
if screen_resolution:
12621343
scres = screen_resolution
12631344
remote_options.set_capability("screenResolution", scres)
1345+
if browser_version:
1346+
br_vers = browser_version
1347+
firefox_options.set_capability("browserVersion", br_vers)
1348+
if platform_name:
1349+
plat_name = platform_name
1350+
firefox_options.set_capability("platformName", plat_name)
12641351
return webdriver.Remote(
12651352
command_executor=address,
12661353
options=remote_options,

0 commit comments

Comments
 (0)