Skip to content

Commit e54d7c2

Browse files
restructured options
1 parent 1e518ac commit e54d7c2

File tree

1 file changed

+48
-43
lines changed

1 file changed

+48
-43
lines changed

py/conftest.py

Lines changed: 48 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)