@@ -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