@@ -106,10 +106,12 @@ def __init__(self, driver_class, request):
106106 self ._driver_class = driver_class
107107 self ._request = request
108108 self ._driver = None
109- self ._options = None
110109 self ._platform = None
111110 self ._service = None
112111 self .kwargs = {}
112+ self .options = driver_class
113+ self .headless = driver_class
114+ self .bidi = bool (self ._request .config .option .bidi )
113115
114116 @property
115117 def exe_platform (self ):
@@ -118,63 +120,68 @@ def exe_platform(self):
118120
119121 @property
120122 def browser_path (self ):
121- return self ._request .config .option .binary
123+ if self ._request .config .option .binary :
124+ return self ._request .config .option .binary
125+ return None
122126
123127 @property
124128 def browser_args (self ):
125- return self ._request .config .option .args
129+ if self ._request .config .option .args :
130+ return self ._request .config .option .args
131+ return None
126132
127133 @property
128134 def driver_path (self ):
129- return self ._request .config .option .executable
135+ if self ._request .config .option .executable :
136+ return self ._request .config .option .executable
137+ return None
130138
131139 @property
132140 def headless (self ):
133- return bool (self ._request .config .option .headless )
134-
135- @property
136- def bidi (self ):
137- return bool (self ._request .config .option .bidi )
138-
139- @property
140- def options (self ):
141- if self .browser_path or self .browser_args :
142- if not self ._options :
143- if self ._driver_class == "Remote" :
144- self ._options = getattr (webdriver , "FirefoxOptions" )() or webdriver .FirefoxOptions ()
145- self ._options .set_capability ("moz:firefoxOptions" , {})
146- self ._options .enable_downloads = True
147- elif self ._driver_class .lower () == "webkitgtk" :
148- self ._driver_class = "WebKitGTK"
149- self ._options = getattr (webdriver , f"{ self ._driver_class } Options" )()
150- self ._options .overlay_scrollbars_enabled = False
151- elif self ._driver_class .lower () == "wpewebkit" :
152- self ._driver_class = "WPEWebKit"
153- self ._options = getattr (webdriver , f"{ self ._driver_class } Options" )()
154- else :
155- self ._options = getattr (webdriver , f"{ self ._driver_class } Options" )()
156-
157- if self .browser_path is not None :
158- self ._options .binary_location = self .browser_path .strip ("'" )
159-
160- if self .browser_args is not None :
161- for arg in self .browser_args .split ():
162- self ._options .add_argument (arg )
141+ self ._headless = bool (self ._request .config .option .headless )
142+ if self ._headless :
143+ return True
144+ return False
163145
146+ @headless .setter
147+ def headless (self , driver_class ):
164148 if self .headless :
165- if self . _driver_class == "Chrome" or self . _driver_class == "Edge" :
149+ if driver_class == "Chrome" or driver_class == "Edge" :
166150 self ._options .add_argument ("--headless=new" )
167- if self . _driver_class == "Firefox" :
151+ if driver_class == "Firefox" :
168152 self ._options .add_argument ("-headless" )
169153
170- if self .bidi :
171- if not self ._options :
172- self ._options = getattr (webdriver , f"{ self ._driver_class } Options" )()
154+ @property
155+ def bidi (self ):
156+ return self ._bidi
157+
158+ @bidi .setter
159+ def bidi (self , value ):
160+ self ._bidi = value
161+ if self ._bidi :
173162 self ._options .web_socket_url = True
174163 self ._options .unhandled_prompt_behavior = "ignore"
175164
165+ @property
166+ def options (self ):
176167 return self ._options
177168
169+ @options .setter
170+ def options (self , driver_class ):
171+ if driver_class == "Remote" :
172+ self ._options = getattr (webdriver , "FirefoxOptions" )()
173+ self ._options .set_capability ("moz:firefoxOptions" , {})
174+ self ._options .enable_downloads = True
175+ elif driver_class .lower () == "webkitgtk" :
176+ driver_class = "WebKitGTK"
177+ self ._options = getattr (webdriver , f"{ driver_class } Options" )()
178+ self ._options .overlay_scrollbars_enabled = False
179+ elif driver_class .lower () == "wpewebkit" :
180+ driver_class = "WPEWebKit"
181+ self ._options = getattr (webdriver , f"{ driver_class } Options" )()
182+ else :
183+ self ._options = getattr (webdriver , f"{ driver_class } Options" )()
184+
178185 @property
179186 def service (self ):
180187 executable = self .driver_path
@@ -190,10 +197,8 @@ def driver(self):
190197 return self ._driver
191198
192199 def _initialize_driver (self ):
193- if self .options :
194- self .kwargs ["options" ] = self .options
195- if self .driver_path :
196- self .kwargs ["service" ] = self .service
200+ self .kwargs ["options" ] = self .options
201+ self .kwargs ["service" ] = self .service
197202 return getattr (webdriver , self ._driver_class )(** self .kwargs )
198203
199204 @property
0 commit comments