Skip to content

Commit f41e1bb

Browse files
Merge pull request #110 from kayqueGovetri/FIX/atexit-chrome-base
FIX: Remove atexit in browsers base chrome and firefox
2 parents 16043b3 + 8ee47a4 commit f41e1bb

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

botcity/web/bot.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ def _cleanup(bot: ReferenceType[WebBot]):
4747
if bot() is not None:
4848
try:
4949
bot().stop_browser()
50+
temp_dir = bot()._botcity_temp_dir
51+
if not temp_dir:
52+
return None
53+
shutil.rmtree(temp_dir, ignore_errors=True)
5054
except Exception:
5155
pass
5256

@@ -88,6 +92,7 @@ def __init__(self, headless=False):
8892
self._shift_hold = False
8993

9094
self._download_folder_path = os.getcwd()
95+
self._botcity_temp_dir = None
9196

9297
atexit.register(_cleanup, ref(self))
9398

@@ -291,6 +296,11 @@ def stop_browser(self):
291296
self.activate_tab(self.get_tabs()[-1])
292297
self._driver.close()
293298
self._driver.quit()
299+
if self.options is not None:
300+
try:
301+
self._botcity_temp_dir = self.options._botcity_temp_dir
302+
except Exception:
303+
self._botcity_temp_dir = None
294304
self.options = None
295305
self.capabilities = None
296306
self._driver = None

botcity/web/browsers/chrome.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import atexit
21
import json
32
import os
43
import tempfile
@@ -8,8 +7,6 @@
87
from selenium.webdriver.chrome.options import Options as ChromeOptions
98
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
109

11-
from ..util import cleanup_temp_dir
12-
1310

1411
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
1512
page_load_strategy="normal") -> ChromeOptions:
@@ -70,10 +67,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
7067
except AttributeError:
7168
pass
7269

70+
chrome_options._botcity_temp_dir = None
7371
if not user_data_dir:
7472
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7573
user_data_dir = temp_dir.name
76-
atexit.register(cleanup_temp_dir, temp_dir)
74+
chrome_options._botcity_temp_dir = user_data_dir
7775

7876
chrome_options.add_argument(f"--user-data-dir={user_data_dir}")
7977

botcity/web/browsers/edge.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import atexit
21
import json
32
import os
43
import tempfile
@@ -8,8 +7,6 @@
87
from msedge.selenium_tools import Edge, EdgeOptions # noqa: F401, F403
98
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
109

11-
from ..util import cleanup_temp_dir
12-
1310

1411
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
1512
page_load_strategy="normal") -> EdgeOptions:
@@ -66,10 +63,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
6663
except AttributeError:
6764
pass
6865

66+
edge_options._botcity_temp_dir = None
6967
if not user_data_dir:
7068
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7169
user_data_dir = temp_dir.name
72-
atexit.register(cleanup_temp_dir, temp_dir)
70+
edge_options._botcity_temp_dir = user_data_dir
7371

7472
edge_options.add_argument(f"--user-data-dir={user_data_dir}")
7573

botcity/web/browsers/firefox.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import atexit
21
import os
32
import tempfile
43
from typing import Dict
@@ -8,7 +7,6 @@
87
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
98
from selenium.webdriver.firefox.options import Options as FirefoxOptions
109

11-
from ..util import cleanup_temp_dir
1210

1311
FIREFOX_MIMETYPES_TO_DOWNLOAD = ['application/vnd.hzn-3d-crossword', 'video/3gpp', 'video/3gpp2',
1412
'application/vnd.mseq', 'application/vnd.3m.post-it-notes',
@@ -358,10 +356,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
358356
page_load_strategy = page_load_strategy
359357
firefox_options.page_load_strategy = page_load_strategy
360358
firefox_options.headless = headless
359+
firefox_options._botcity_temp_dir = None
361360
if not user_data_dir:
362361
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
363362
user_data_dir = temp_dir.name
364-
atexit.register(cleanup_temp_dir, temp_dir)
363+
firefox_options._botcity_temp_dir = user_data_dir
365364
firefox_profile = webdriver.FirefoxProfile(user_data_dir)
366365
firefox_profile.set_preference("security.default_personal_cert", "Select Automatically")
367366
firefox_profile.set_preference('browser.download.folderList', 2)

0 commit comments

Comments
 (0)