|
6 | 6 |
|
7 | 7 | from .course import EchoCloudCourse |
8 | 8 | from .echo_exceptions import EchoLoginError |
9 | | -from .utils import naive_versiontuple |
| 9 | +from .utils import naive_versiontuple, PERSISTENT_SESSION_FOLDER |
10 | 10 |
|
11 | 11 |
|
12 | 12 | from pick import pick |
|
22 | 22 |
|
23 | 23 |
|
24 | 24 | def build_chrome_driver( |
25 | | - use_local_binary, selenium_version_ge_4100, setup_credential, user_agent, log_path |
| 25 | + use_local_binary, |
| 26 | + selenium_version_ge_4100, |
| 27 | + setup_credential, |
| 28 | + user_agent, |
| 29 | + log_path, |
| 30 | + persistent_session, |
26 | 31 | ): |
27 | 32 | from selenium.webdriver.chrome.options import Options |
28 | 33 |
|
29 | 34 | opts = Options() |
30 | 35 | if not setup_credential: |
31 | 36 | opts.add_argument("--headless") |
| 37 | + if persistent_session: |
| 38 | + folder_path = PERSISTENT_SESSION_FOLDER # default current dir |
| 39 | + opts.add_argument("--user-data-dir={}".format(folder_path)) |
32 | 40 | opts.add_argument("--window-size=1920x1080") |
33 | 41 | opts.add_argument("user-agent={}".format(user_agent)) |
34 | 42 |
|
@@ -62,8 +70,18 @@ def build_chrome_driver( |
62 | 70 |
|
63 | 71 |
|
64 | 72 | def build_firefox_driver( |
65 | | - use_local_binary, selenium_version_ge_4100, setup_credential, user_agent, log_path |
| 73 | + use_local_binary, |
| 74 | + selenium_version_ge_4100, |
| 75 | + setup_credential, |
| 76 | + user_agent, |
| 77 | + log_path, |
| 78 | + persistent_session, |
66 | 79 | ): |
| 80 | + if persistent_session: |
| 81 | + raise NotImplementedError( |
| 82 | + "Save-login not implemented for Firefox! Feel free to make a PR for it..." |
| 83 | + ) |
| 84 | + |
67 | 85 | profile = webdriver.FirefoxProfile() |
68 | 86 | profile.set_preference("general.useragent.override", user_agent) |
69 | 87 | kwargs = dict() |
@@ -95,8 +113,18 @@ def build_firefox_driver( |
95 | 113 |
|
96 | 114 |
|
97 | 115 | def build_phantomjs_driver( |
98 | | - use_local_binary, selenium_version_ge_4100, setup_credential, user_agent, log_path |
| 116 | + use_local_binary, |
| 117 | + selenium_version_ge_4100, |
| 118 | + setup_credential, |
| 119 | + user_agent, |
| 120 | + log_path, |
| 121 | + persistent_session, |
99 | 122 | ): |
| 123 | + if persistent_session: |
| 124 | + raise NotImplementedError( |
| 125 | + "Save-login not implemented for Firefox! Feel free to make a PR for it..." |
| 126 | + ) |
| 127 | + |
100 | 128 | dcap = dict() |
101 | 129 | dcap.update(DesiredCapabilities.PHANTOMJS) |
102 | 130 | dcap["phantomjs.page.settings.userAgent"] = ( |
@@ -128,6 +156,7 @@ def __init__( |
128 | 156 | use_local_binary=False, |
129 | 157 | webdriver_to_use="phantomjs", |
130 | 158 | interactive_mode=False, |
| 159 | + persistent_session=False, |
131 | 160 | ): |
132 | 161 | self._course = course |
133 | 162 | root_path = os.path.dirname(os.path.abspath(sys.modules["__main__"].__file__)) |
@@ -175,6 +204,7 @@ def __init__( |
175 | 204 | setup_credential=setup_credential, |
176 | 205 | user_agent=self._useragent, |
177 | 206 | log_path=log_path, |
| 207 | + persistent_session=persistent_session, |
178 | 208 | ) |
179 | 209 |
|
180 | 210 | self.setup_credential = setup_credential |
|
0 commit comments