Skip to content

Commit 14745ca

Browse files
authored
Merge pull request #100 from kayqueGovetri/0.branch
FIX: Implement atexit to stop browser
2 parents 107c10b + ed935f5 commit 14745ca

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

botcity/web/bot.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from __future__ import annotations
2+
3+
import atexit
14
import base64
25
import functools
36
import glob
@@ -25,6 +28,7 @@
2528
from selenium.webdriver.remote.webelement import WebElement
2629
from selenium.webdriver.support.wait import WebDriverWait, TimeoutException, NoSuchElementException
2730
from selenium.webdriver.support import expected_conditions as EC
31+
from weakref import ReferenceType, ref
2832

2933
from . import config, cv2find
3034
from .browsers import BROWSER_CONFIGS, Browser, PageLoadStrategy
@@ -39,6 +43,14 @@
3943
logger = logging.getLogger(__name__)
4044

4145

46+
def _cleanup(bot: ReferenceType[WebBot]):
47+
if bot() is not None:
48+
try:
49+
bot().stop_browser()
50+
except Exception:
51+
pass
52+
53+
4254
class WebBot(BaseBot):
4355
KEYS = Keys
4456
DEFAULT_DIMENSIONS = (1600, 900)
@@ -77,6 +89,8 @@ def __init__(self, headless=False):
7789

7890
self._download_folder_path = os.getcwd()
7991

92+
atexit.register(_cleanup, ref(self))
93+
8094
def __enter__(self):
8195
pass
8296

conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import typing
88
import platform
99

10+
from webdriver_manager.core.driver_cache import DriverCacheManager
1011
from botcity.web import WebBot, Browser, By, browsers
1112
from webdriver_manager.chrome import ChromeDriverManager
1213
from webdriver_manager.firefox import GeckoDriverManager
@@ -97,7 +98,8 @@ def download_driver(request):
9798
folder_driver = tempfile.mkdtemp()
9899
browser = request.config.getoption("--browser") or Browser.CHROME
99100
manager = factory_driver_manager(browser=browser)
100-
installed_driver = manager(path=folder_driver).install()
101+
cache_manager = DriverCacheManager(root_dir=folder_driver)
102+
installed_driver = manager(cache_manager=cache_manager).install()
101103
yield installed_driver
102104
shutil.rmtree(folder_driver)
103105

0 commit comments

Comments
 (0)