Skip to content

Commit 38b7e24

Browse files
Merge pull request #109 from kayqueGovetri/FIX/atexit-chrome-edge
FIX: Adjust atexit in edge and chrome
2 parents d2765ee + 539bbd7 commit 38b7e24

File tree

5 files changed

+18
-13
lines changed

5 files changed

+18
-13
lines changed

botcity/web/bot.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ def _cleanup(bot: ReferenceType[WebBot]):
4949
if bot() is not None:
5050
try:
5151
bot().stop_browser()
52+
temp_dir = bot()._botcity_temp_dir
53+
if not temp_dir:
54+
return None
55+
shutil.rmtree(temp_dir, ignore_errors=True)
5256
except Exception:
5357
pass
5458

@@ -91,6 +95,7 @@ def __init__(self, headless=False):
9195
self._shift_hold = False
9296

9397
self._download_folder_path = os.getcwd()
98+
self._botcity_temp_dir = None
9499

95100
atexit.register(_cleanup, ref(self))
96101

@@ -367,6 +372,11 @@ def stop_browser(self):
367372
self.activate_tab(self.get_tabs()[-1])
368373
self._driver.close()
369374
self._driver.quit()
375+
if self.options is not None:
376+
try:
377+
self._botcity_temp_dir = self.options._botcity_temp_dir
378+
except Exception:
379+
self._botcity_temp_dir = None
370380
self.options = None
371381
self.capabilities = None
372382
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,7 +7,6 @@
87
from selenium.webdriver.chrome.options import Options as ChromeOptions
98
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
109
from selenium.webdriver.chrome.service import Service as ChromeService # noqa: F401, F403
11-
from ..util import cleanup_temp_dir
1210

1311

1412
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
@@ -72,11 +70,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
7270
chrome_options.add_argument("--no-sandbox")
7371
except AttributeError:
7472
pass
75-
73+
chrome_options._botcity_temp_dir = None
7674
if not user_data_dir:
7775
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7876
user_data_dir = temp_dir.name
79-
atexit.register(cleanup_temp_dir, temp_dir)
77+
chrome_options._botcity_temp_dir = user_data_dir
8078

8179
chrome_options.add_argument(f"--user-data-dir={user_data_dir}")
8280

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 selenium.webdriver.common.desired_capabilities import DesiredCapabilities
98
from selenium.webdriver import Edge, EdgeOptions # noqa: F401, F403
109
from selenium.webdriver.edge.service import Service as EdgeService # noqa: F401, F403
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+
edge_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+
edge_options._botcity_temp_dir = user_data_dir
7776

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

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.firefox.options import Options as FirefoxOptions
98
from selenium.webdriver.firefox.service import Service as FirefoxService # noqa: F401, F403
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',
@@ -359,10 +357,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
359357
firefox_options.page_load_strategy = page_load_strategy
360358
if headless:
361359
firefox_options.add_argument('-headless')
360+
firefox_options._botcity_temp_dir = None
362361
if not user_data_dir:
363362
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
364363
user_data_dir = temp_dir.name
365-
atexit.register(cleanup_temp_dir, temp_dir)
364+
firefox_options._botcity_temp_dir = user_data_dir
366365
if binary_path:
367366
firefox_options.binary_location = str(binary_path)
368367
firefox_options.set_preference("profile", user_data_dir)

botcity/web/browsers/undetected_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 platform
@@ -8,7 +7,6 @@
87
from undetected_chromedriver import Chrome # noqa: F401, F403
98
from undetected_chromedriver.options import ChromeOptions
109
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
11-
from ..util import cleanup_temp_dir
1210

1311
try:
1412
from undetected_chromedriver import Service as ChromeService # noqa: F401, F403
@@ -74,10 +72,11 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
7472
except AttributeError:
7573
pass
7674

75+
chrome_options._botcity_temp_dir = None
7776
if not user_data_dir:
7877
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7978
user_data_dir = temp_dir.name
80-
atexit.register(cleanup_temp_dir, temp_dir)
79+
chrome_options._botcity_temp_dir = user_data_dir
8180

8281
chrome_options.add_argument(f"--user-data-dir={user_data_dir}")
8382

0 commit comments

Comments
 (0)