Skip to content

Commit 864701b

Browse files
ElSnoManCarlos Kidman
andauthored
Use new Service objects for Chrome and Firefox (#242)
Co-authored-by: Carlos Kidman <carlos@qap.dev>
1 parent c3660fb commit 864701b

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

pylenium/webdriver_factory.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from selenium.webdriver.chrome.service import Service as ChromeService
88
from selenium.webdriver.edge.service import Service as EdgeService
99
from selenium.webdriver.edge.options import Options as EdgeOptions
10+
from selenium.webdriver.firefox.service import Service as FirefoxService
1011
from webdriver_manager.chrome import ChromeDriverManager
1112
from webdriver_manager.firefox import GeckoDriverManager
1213
from 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:
175178
def 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

281295
def build_ie(
@@ -316,6 +330,7 @@ def build_ie(
316330
def 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 {}))

tests/ui/test_pydriver.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from pylenium.a11y import PyleniumAxe
55
from pylenium.driver import Pylenium
66

7+
78
THE_INTERNET = "https://the-internet.herokuapp.com"
89

910

@@ -115,6 +116,7 @@ def test_have_url(py: Pylenium):
115116
py.should().have_url("https://www.qap.dev/")
116117

117118

119+
@pytest.mark.skipif(os.environ.get("CI") == "true", reason="Skip on CI")
118120
def test_loading_extension_to_browser(py: Pylenium, project_root):
119121
py.config.driver.extension_paths.append(f"{project_root}/tests/ui/Get CRX.crx")
120122
py.visit("chrome://extensions/")

tests/unit/test_bugfixes.py

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)