Skip to content

Commit 6372faa

Browse files
committed
Add methods for handling cookies on web pages
1 parent b478eb3 commit 6372faa

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

seleniumbase/fixtures/base_case.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,6 +1479,67 @@ def save_page_source(self, name, folder=None):
14791479
"""
14801480
return page_actions.save_page_source(self.driver, name, folder)
14811481

1482+
def save_cookies(self, name="cookies.txt"):
1483+
""" Saves the page cookies to the "saved_cookies" folder. """
1484+
cookies = self.driver.get_cookies()
1485+
json_cookies = json.dumps(cookies)
1486+
if name.endswith('/'):
1487+
raise Exception("Invalid filename for Cookies!")
1488+
if '/' in name:
1489+
name = name.split('/')[-1]
1490+
if len(name) < 1:
1491+
raise Exception("Filename for Cookies is too short!")
1492+
if not name.endswith(".txt"):
1493+
name = name + ".txt"
1494+
folder = constants.SavedCookies.STORAGE_FOLDER
1495+
abs_path = os.path.abspath('.')
1496+
file_path = abs_path + "/%s" % folder
1497+
if not os.path.exists(file_path):
1498+
os.makedirs(file_path)
1499+
cookies_file_path = "%s/%s" % (file_path, name)
1500+
cookies_file = codecs.open(cookies_file_path, "w+")
1501+
cookies_file.writelines(json_cookies)
1502+
cookies_file.close()
1503+
1504+
def load_cookies(self, name="cookies.txt"):
1505+
""" Loads the page cookies from the "saved_cookies" folder. """
1506+
if name.endswith('/'):
1507+
raise Exception("Invalid filename for Cookies!")
1508+
if '/' in name:
1509+
name = name.split('/')[-1]
1510+
if len(name) < 1:
1511+
raise Exception("Filename for Cookies is too short!")
1512+
if not name.endswith(".txt"):
1513+
name = name + ".txt"
1514+
folder = constants.SavedCookies.STORAGE_FOLDER
1515+
abs_path = os.path.abspath('.')
1516+
file_path = abs_path + "/%s" % folder
1517+
cookies_file_path = "%s/%s" % (file_path, name)
1518+
f = open(cookies_file_path, 'r')
1519+
json_cookies = f.read().strip()
1520+
f.close()
1521+
cookies = json.loads(json_cookies)
1522+
for cookie in cookies:
1523+
if 'expiry' in cookie:
1524+
del cookie['expiry']
1525+
self.driver.add_cookie(cookie)
1526+
1527+
def delete_all_cookies(self):
1528+
""" Deletes all cookies in the web browser.
1529+
Does NOT delete the saved cookies file. """
1530+
self.driver.delete_all_cookies()
1531+
1532+
def delete_saved_cookies(self, name="cookies.txt"):
1533+
""" Deletes the cookies file from the "saved_cookies" folder.
1534+
Does NOT delete the cookies from the web browser. """
1535+
folder = constants.SavedCookies.STORAGE_FOLDER
1536+
abs_path = os.path.abspath('.')
1537+
file_path = abs_path + "/%s" % folder
1538+
cookies_file_path = "%s/%s" % (file_path, name)
1539+
if os.path.exists(cookies_file_path):
1540+
if cookies_file_path.endswith('.txt'):
1541+
os.remove(cookies_file_path)
1542+
14821543
def wait_for_ready_state_complete(self, timeout=None):
14831544
try:
14841545
# If there's an alert, skip

0 commit comments

Comments
 (0)