Skip to content

Commit b92d28f

Browse files
fixed browser args bugs
1 parent a63148a commit b92d28f

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

py/conftest.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def __init__(self, driver_class, request):
153153
self._service = None
154154
self.kwargs = {}
155155
self.options = driver_class
156-
self.headless = driver_class
156+
self.headless = request.config.option.headless
157157
self.bidi = request.config.option.bidi
158158

159159
@property
@@ -213,17 +213,17 @@ def driver_path(self):
213213

214214
@property
215215
def headless(self):
216-
self._headless = self._request.config.option.headless
217216
if self._headless:
218217
return True
219218
return False
220219

221220
@headless.setter
222-
def headless(self, driver_class):
223-
if self.headless:
224-
if driver_class.lower() == "chrome" or driver_class.lower() == "edge":
221+
def headless(self, value):
222+
self._headless = value
223+
if self._headless:
224+
if self.driver_class.lower() == "chrome" or self.driver_class.lower() == "edge":
225225
self._options.add_argument("--headless=new")
226-
if driver_class.lower() == "firefox":
226+
if self.driver_class.lower() == "firefox":
227227
self._options.add_argument("-headless")
228228

229229
@property
@@ -245,17 +245,29 @@ def options(self):
245245
def options(self, cls_name):
246246
if cls_name.lower() not in self.supported_options:
247247
raise AttributeError(f"Invalid Options class {cls_name.lower()}")
248-
self._options = getattr(webdriver, getattr(self.supported_options, cls_name.lower()))()
248+
249249
if self.driver_class == self.supported_drivers.firefox:
250-
# There are issues with window size/position when running Firefox
251-
# under Wayland, so we use XWayland instead.
252-
os.environ["MOZ_ENABLE_WAYLAND"] = "0"
253-
if self.driver_class == self.supported_drivers.remote:
250+
self._options = getattr(webdriver, self.supported_options.firefox)()
251+
if self.exe_platform == "Linux":
252+
# There are issues with window size/position when running Firefox
253+
# under Wayland, so we use XWayland instead.
254+
os.environ["MOZ_ENABLE_WAYLAND"] = "0"
255+
elif self.driver_class == self.supported_drivers.remote:
256+
self._options = getattr(webdriver, self.supported_options.firefox)()
254257
self._options.set_capability("moz:firefoxOptions", {})
255258
self._options.enable_downloads = True
256-
os.environ["MOZ_ENABLE_WAYLAND"] = "0"
257-
if self.driver_class == self.supported_drivers.webkitgtk:
258-
self._options.overlay_scrollbars_enabled = False
259+
else:
260+
opts_cls = getattr(self.supported_options, cls_name.lower())
261+
self._options = getattr(webdriver, opts_cls)()
262+
263+
if self.browser_path or self.browser_args:
264+
if self.driver_class == self.supported_drivers.webkitgtk:
265+
self._options.overlay_scrollbars_enabled = False
266+
if self.browser_path is not None:
267+
self._options.binary_location = browser_path.strip("'")
268+
if self.browser_args is not None:
269+
for arg in self.browser_args.split():
270+
self._options.add_argument(arg)
259271

260272
@property
261273
def service(self):

0 commit comments

Comments
 (0)