Skip to content

Commit 29d6323

Browse files
committed
FIX: Remove atexit in browsers base chrome and firefox
1 parent 16043b3 commit 29d6323

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
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 & 3 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,7 +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
1210

1311

1412
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
@@ -70,10 +68,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
7068
except AttributeError:
7169
pass
7270

71+
chrome_options._botcity_temp_dir = None
7372
if not user_data_dir:
7473
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7574
user_data_dir = temp_dir.name
76-
atexit.register(cleanup_temp_dir, temp_dir)
75+
chrome_options._botcity_temp_dir = user_data_dir
7776

7877
chrome_options.add_argument(f"--user-data-dir={user_data_dir}")
7978

botcity/web/browsers/edge.py

Lines changed: 2 additions & 3 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,7 +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
1210

1311

1412
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
@@ -66,10 +64,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
6664
except AttributeError:
6765
pass
6866

67+
edge_options._botcity_temp_dir = None
6968
if not user_data_dir:
7069
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7170
user_data_dir = temp_dir.name
72-
atexit.register(cleanup_temp_dir, temp_dir)
71+
edge_options._botcity_temp_dir = user_data_dir
7372

7473
edge_options.add_argument(f"--user-data-dir={user_data_dir}")
7574

botcity/web/browsers/firefox.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,10 +358,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
358358
page_load_strategy = page_load_strategy
359359
firefox_options.page_load_strategy = page_load_strategy
360360
firefox_options.headless = headless
361+
firefox_options._botcity_temp_dir = None
361362
if not user_data_dir:
362363
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
363364
user_data_dir = temp_dir.name
364-
atexit.register(cleanup_temp_dir, temp_dir)
365+
firefox_options._botcity_temp_dir = user_data_dir
365366
firefox_profile = webdriver.FirefoxProfile(user_data_dir)
366367
firefox_profile.set_preference("security.default_personal_cert", "Select Automatically")
367368
firefox_profile.set_preference('browser.download.folderList', 2)

0 commit comments

Comments
 (0)