1+ import contextlib
12import shutil
23import tempfile
34
45import pytest
56import selenium .webdriver
67from requestium import Session
78
8- chrome_webdriver_path = shutil .which ("chromedriver" )
9-
109
10+ @contextlib .contextmanager
1111def create_chrome_session (headless = False ):
12- chrome_options = selenium .webdriver .ChromeOptions ()
13- if headless :
14- chrome_options .add_argument ("--headless=new" )
15- chrome_options .add_argument (f"--user-data-dir={ tempfile .mkdtemp ()} " )
16- chrome_options .add_argument ("--no-sandbox" )
17- chrome_options .add_argument ("--disable-dev-shm-usage" )
18- return Session (webdriver_path = chrome_webdriver_path , browser_options = chrome_options )
12+ with tempfile .TemporaryDirectory () as tmp_profile_dir :
13+ chrome_options = selenium .webdriver .ChromeOptions ()
14+ if headless :
15+ chrome_options .add_argument ("--headless=new" )
16+ chrome_options .add_argument (f"--user-data-dir={ tmp_profile_dir } " )
17+ chrome_options .add_argument ("--no-sandbox" )
18+ chrome_options .add_argument ("--disable-dev-shm-usage" )
19+
20+ session = Session (
21+ webdriver_path = shutil .which ("chromedriver" ), browser_options = chrome_options
22+ )
23+ try :
24+ yield session
25+ finally :
26+ session .driver .quit ()
1927
2028
2129session_factories = {
@@ -26,11 +34,10 @@ def create_chrome_session(headless=False):
2634}
2735
2836
29- @pytest .fixture (params = session_factories . keys () )
37+ @pytest .fixture (params = [ "chrome" , "chrome_headless" ] )
3038def session (request ):
31- session = session_factories [request .param ]()
32- yield session
33- session .driver .quit ()
39+ with create_chrome_session (headless = (request .param == "chrome_headless" )) as s :
40+ yield s
3441
3542
3643def test_deprecation_warning_for_ensure_element_locators_with_underscores (session ):
0 commit comments