18
18
)
19
19
from ..system import IS_WINDOWS_OS , get_system_bitness
20
20
from . import utils
21
+ from .settings import settings
21
22
22
23
23
24
try :
24
25
from selenium import webdriver
25
- from selenium .webdriver .remote .webdriver import (
26
- WebDriver as RemoteWebDriver ,
27
- )
28
26
from selenium .webdriver .chrome .options import Options as _ChromeOptions
29
27
from selenium .webdriver .chrome .service import Service as _ChromeService
30
28
from selenium .webdriver .firefox .options import Options as _FirefoxOptions
31
29
from selenium .webdriver .firefox .service import Service as _FirefoxService
30
+ from selenium .webdriver .remote .webdriver import (
31
+ WebDriver as RemoteWebDriver ,
32
+ )
32
33
except ImportError :
33
34
webdriver = None
34
35
37
38
except ImportError :
38
39
requests = None
39
40
40
- try :
41
- from django .conf import settings
42
-
43
- # If this is being used in a django installation, look for the path in settings
44
- # otherwise base the path on BASE_DIR.
45
- DEFAULT_DRIVER_ROOT = getattr (settings , 'BROWSER_DRIVER_DIR' , None )
46
- if not DEFAULT_DRIVER_ROOT :
47
- DEFAULT_DRIVER_ROOT = os .path .join (settings .BASE_DIR , 'bin' )
48
-
49
- DEFAULT_HEADLESS = getattr (settings , 'BROWSER_HEADLESS' , None )
50
- DEFAULT_DOWNLOAD_DIRECTORY = getattr (settings , 'BROWSER_DEFAULT_DOWNLOAD_DIRECTORY' , None )
51
-
52
- WEBDRIVER_IN_PATH = getattr (settings , 'BROWSER_WEBDRIVER_IN_PATH' , False )
53
- CHECK_DRIVER_VERSION = getattr (settings , 'BROWSER_CHECK_DRIVER_VERSION' , True )
54
- CHECK_DRIVER_VERSION_INTERVAL = getattr (settings , 'BROWSER_CHECK_DRIVER_VERSION_INTERVAL' , 24 )
55
- USER_AGENT = getattr (settings , 'BROWSER_USER_AGENT' , None )
56
- except : # noqa
57
- settings = None
58
- DEFAULT_DRIVER_ROOT = os .environ .get ('BROWSER_DRIVER_DIR' , 'bin/' )
59
- WEBDRIVER_IN_PATH = os .environ .get ('BROWSER_WEBDRIVER_IN_PATH' , False )
60
- CHECK_DRIVER_VERSION = os .environ .get ('BROWSER_CHECK_DRIVER_VERSION' , True )
61
- CHECK_DRIVER_VERSION_INTERVAL = os .environ .get ('BROWSER_CHECK_DRIVER_VERSION_INTERVAL' , 24 )
62
- USER_AGENT = os .environ .get ('BROWSER_USER_AGENT' , None )
63
- DEFAULT_HEADLESS = os .environ .get ('BROWSER_HEADLESS' , None )
64
- DEFAULT_DOWNLOAD_DIRECTORY = os .environ .get ('BROWSER_DEFAULT_DOWNLOAD_DIRECTORY' , None )
65
-
66
-
67
41
log = logging .getLogger ('iarp_utils.browser.drivers' )
68
42
69
43
@@ -76,7 +50,7 @@ def download_and_extract_zip_file(url, local_zip_file, extracting_file, **kwargs
76
50
extract_zip_single_file (
77
51
zip_file = local_zip_file ,
78
52
file_to_extract = extracting_file ,
79
- folder_to_extract_to = DEFAULT_DRIVER_ROOT ,
53
+ folder_to_extract_to = settings . EXECUTABLE_ROOT ,
80
54
log = log ,
81
55
** kwargs
82
56
)
@@ -85,7 +59,7 @@ def download_and_extract_zip_file(url, local_zip_file, extracting_file, **kwargs
85
59
extract_tar_single_file (
86
60
tar_file = local_zip_file ,
87
61
file_to_extract = extracting_file ,
88
- folder_to_extract_to = DEFAULT_DRIVER_ROOT ,
62
+ folder_to_extract_to = settings . EXECUTABLE_ROOT ,
89
63
log = log ,
90
64
** kwargs
91
65
)
@@ -101,17 +75,18 @@ def __init__(self, **kwargs):
101
75
if webdriver is None :
102
76
raise ImproperlyConfigured ('selenium is required for iarp_utils.browser to operate. pip install selenium' )
103
77
104
- self .headless = bool (kwargs .get ('headless' , DEFAULT_HEADLESS ))
105
- self ._download_directory = kwargs .get ('download_directory' , DEFAULT_DOWNLOAD_DIRECTORY )
106
- self .user_agent = kwargs .get ('user_agent' , USER_AGENT )
78
+ self .headless = bool (kwargs .get ('headless' , settings . HEADLESS ))
79
+ self ._download_directory = kwargs .get ('download_directory' , settings . DOWNLOAD_DIRECTORY )
80
+ self .user_agent = kwargs .get ('user_agent' , settings . USER_AGENT )
107
81
self .latest_version = None
108
82
self ._browser = None
109
83
110
84
# Whether or not we should check driver version before running the browser.
111
- self ._check_driver_version = kwargs .get ('check_driver_version' , CHECK_DRIVER_VERSION )
85
+ self ._check_driver_version = kwargs .get ('check_driver_version' , settings . CHECK_DRIVER_VERSION )
112
86
113
87
# How often (in hours) to check if the driver version needs updating
114
- self ._check_driver_version_interval = kwargs .get ('check_driver_version_interval' , CHECK_DRIVER_VERSION_INTERVAL )
88
+ self ._check_driver_version_interval = kwargs .get ('check_driver_version_interval' ,
89
+ settings .CHECK_DRIVER_VERSION_INTERVAL )
115
90
116
91
@property
117
92
def webdriver (self ):
@@ -139,7 +114,7 @@ def get_driver_options(self):
139
114
def get_driver_service (self ):
140
115
service = self .service_class ()
141
116
142
- if not WEBDRIVER_IN_PATH :
117
+ if not settings . WEBDRIVER_IN_PATH :
143
118
144
119
try :
145
120
binary = self .binary_location ()
@@ -174,11 +149,11 @@ def _check_driver_version_allowed(self):
174
149
log .debug ('webdriver check: not checking due to check_driver_version=False' )
175
150
return False
176
151
177
- if WEBDRIVER_IN_PATH :
152
+ if settings . WEBDRIVER_IN_PATH :
178
153
log .debug ('webdriver check: not checking due to WEBDRIVER_IN_PATH=True' )
179
154
return False
180
155
181
- dt_file = os .path .join (DEFAULT_DRIVER_ROOT , 'check_driver_version.json' )
156
+ dt_file = os .path .join (settings . EXECUTABLE_ROOT , 'check_driver_version.json' )
182
157
driver_name = type (self ).__name__
183
158
184
159
try :
@@ -254,17 +229,14 @@ def binary_location(self):
254
229
255
230
filename = self .driver
256
231
257
- root_driver = os .path .join (DEFAULT_DRIVER_ROOT , filename )
232
+ root_driver = os .path .join (settings . EXECUTABLE_ROOT , filename )
258
233
if os .path .isfile (root_driver ):
259
234
log .debug (f'{ self .__class__ .__name__ } binary located at default { root_driver } ' )
260
235
return root_driver
261
236
262
237
for root in ['bin/' , '' , 'setup/' , 'setup/bin/' ]:
263
238
264
- try :
265
- root_driver = os .path .join (settings .BASE_DIR , root , filename )
266
- except AttributeError :
267
- root_driver = os .path .join (root , filename )
239
+ root_driver = os .path .join (root , filename )
268
240
269
241
if os .path .isfile (root_driver ):
270
242
log .debug (f'{ self .__class__ .__name__ } binary located at { root_driver } ' )
@@ -356,7 +328,7 @@ def get_driver_version(self):
356
328
def check_driver_version (self ):
357
329
""" Check to ensure the local chromedriver being used is valid for the chrome installation. """
358
330
359
- if WEBDRIVER_IN_PATH :
331
+ if settings . WEBDRIVER_IN_PATH :
360
332
log .debug (f'{ self .__class__ .__name__ } version checks: not checking due to WEBDRIVER_IN_PATH=True' )
361
333
return
362
334
if not requests :
@@ -413,7 +385,7 @@ def check_driver_version(self):
413
385
file_url = f'{ root_url } { self .latest_version } /{ zip_file_name } '
414
386
log .debug (f'{ self .__class__ .__name__ } version check: downloading { file_url } ' )
415
387
log .debug (f'{ self .__class__ .__name__ } version check: to { local_zip_file } extracting '
416
- f'{ self .driver } to { DEFAULT_DRIVER_ROOT } ' )
388
+ f'{ self .driver } to { settings . EXECUTABLE_ROOT } ' )
417
389
418
390
download_and_extract_zip_file (
419
391
url = file_url ,
@@ -459,7 +431,7 @@ def get_driver_version(self):
459
431
def check_driver_version (self ):
460
432
""" Check to ensure the local geckodriver being used is valid for the firefox installation. """
461
433
462
- if WEBDRIVER_IN_PATH :
434
+ if settings . WEBDRIVER_IN_PATH :
463
435
log .debug ('FirefoxDriver version checks: not checking due to WEBDRIVER_IN_PATH=True' )
464
436
return
465
437
if not requests :
@@ -509,7 +481,7 @@ def check_driver_version(self):
509
481
file_url = dl ['browser_download_url' ]
510
482
log .debug (f'FirefoxDriver version check: downloading { file_url } ' )
511
483
log .debug (f'FirefoxDriver version check: to { local_zip_file } extracting '
512
- f'{ self .driver } to { DEFAULT_DRIVER_ROOT } ' )
484
+ f'{ self .driver } to { settings . EXECUTABLE_ROOT } ' )
513
485
514
486
download_and_extract_zip_file (
515
487
url = file_url ,
0 commit comments