77from selenium .webdriver .chrome .service import Service as ChromeService
88from selenium .webdriver .edge .service import Service as EdgeService
99from selenium .webdriver .edge .options import Options as EdgeOptions
10+ from selenium .webdriver .firefox .service import Service as FirefoxService
1011from webdriver_manager .chrome import ChromeDriverManager
1112from webdriver_manager .firefox import GeckoDriverManager
1213from webdriver_manager .microsoft import IEDriverManager , EdgeChromiumDriverManager
@@ -124,6 +125,7 @@ def build_from_config(config: PyleniumConfig) -> WebDriver:
124125 return build_chrome (
125126 config .driver .version ,
126127 config .driver .options ,
128+ config .driver .capabilities ,
127129 config .driver .experimental_options ,
128130 config .driver .extension_paths ,
129131 config .driver .local_path ,
@@ -153,6 +155,7 @@ def build_from_config(config: PyleniumConfig) -> WebDriver:
153155 return build_opera (
154156 config .driver .version ,
155157 config .driver .options ,
158+ config .driver .capabilities ,
156159 config .driver .experimental_options ,
157160 config .driver .extension_paths ,
158161 config .driver .local_path ,
@@ -175,6 +178,7 @@ def build_from_config(config: PyleniumConfig) -> WebDriver:
175178def build_chrome (
176179 version : str ,
177180 browser_options : List [str ],
181+ capabilities : Optional [dict ],
178182 experimental_options : Optional [List [dict ]],
179183 extension_paths : Optional [List [str ]],
180184 local_path : Optional [str ],
@@ -185,6 +189,7 @@ def build_chrome(
185189 Args:
186190 version: The desired version of Chrome.
187191 browser_options: The list of options/arguments to include.
192+ capabilities: The dict of capabilities to include.
188193 experimental_options: The list of experimental options to include.
189194 extension_paths: The list of extensions to add to the browser.
190195 local_path: The path to the driver binary.
@@ -194,6 +199,10 @@ def build_chrome(
194199 driver = WebDriverFactory().build_chrome('latest', ['headless', 'incognito'])
195200 """
196201 options = build_options (Browser .CHROME , browser_options , experimental_options , extension_paths )
202+ caps = build_capabilities (Browser .CHROME , capabilities )
203+ for cap in caps :
204+ options .set_capability (cap , caps [cap ])
205+
197206 if local_path :
198207 driver = webdriver .Chrome (service = ChromeService (local_path ), options = options , ** (webdriver_kwargs or {}))
199208 else :
@@ -273,9 +282,14 @@ def build_firefox(
273282 options = build_options (Browser .FIREFOX , browser_options , experimental_options , extension_paths )
274283 if local_path :
275284 return webdriver .Firefox (
276- executable_path = local_path , options = options , capabilities = caps , ** (webdriver_kwargs or {})
285+ service = FirefoxService ( local_path ), capabilities = caps , options = options , ** (webdriver_kwargs or {})
277286 )
278- return webdriver .Firefox (executable_path = GeckoDriverManager (version = version ).install (), options = options , ** (webdriver_kwargs or {}))
287+ return webdriver .Firefox (
288+ service = FirefoxService (GeckoDriverManager (version = version ).install ()),
289+ capabilities = caps ,
290+ options = options ,
291+ ** (webdriver_kwargs or {}),
292+ )
279293
280294
281295def build_ie (
@@ -316,6 +330,7 @@ def build_ie(
316330def build_opera (
317331 version : str ,
318332 browser_options : List [str ],
333+ capabilities : Optional [dict ],
319334 experimental_options : Optional [List [dict ]],
320335 extension_paths : Optional [List [str ]],
321336 local_path : Optional [str ],
@@ -326,6 +341,7 @@ def build_opera(
326341 Args:
327342 version: The desired version of Opera.
328343 browser_options: The list of options/arguments to include.
344+ capabilities: The dict of capabilities to include.
329345 experimental_options: The list of experimental options to include.
330346 extension_paths: The list of extensions to add to the browser.
331347 local_path: The path to the driver binary.
@@ -335,6 +351,10 @@ def build_opera(
335351 driver = WebDriverFactory().build_opera('latest', ['--start-maximized'], None)
336352 """
337353 options = build_options (Browser .OPERA , browser_options , experimental_options , extension_paths )
354+ caps = build_capabilities (Browser .OPERA , capabilities )
355+ for cap in caps :
356+ options .set_capability (cap , caps [cap ])
357+
338358 if local_path :
339359 return webdriver .Opera (executable_path = local_path , options = options , ** (webdriver_kwargs or {}))
340360 return webdriver .Opera (OperaDriverManager (version = version ).install (), options = options , ** (webdriver_kwargs or {}))
0 commit comments