cookies:可以简单理解为“身份信息”;
备注:下面代码主要测试了 cookies
的保存与读入;
# -*- coding:utf-8 -*-
from selenium import webdriver
import time
import os
import json
# 登录
def login():
driver.get('https://www.baidu.com/')
driver.maximize_window()
# 模仿登录
driver.find_element_by_link_text('登录').click()
time.sleep(1)
driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()
time.sleep(1)
driver.find_element_by_id('TANGRAM__PSP_10__userName').send_keys('152----xxxx')
time.sleep(1)
driver.find_element_by_id('TANGRAM__PSP_10__password').send_keys('*******')
time.sleep(1)
driver.find_element_by_id('TANGRAM__PSP_10__submit').click()
time.sleep(1)
# 保存cookies
def save_cookies():
project_path = os.getcwd()
file_path = project_path + '/cookies/'
# 检查文件夹
if not os.path.exists(file_path):
os.mkdir(file_path)
# 存储cookies信息
cookies = driver.get_cookies()
print('---- cookies:', cookies)
with open(file_path + 'test_cookies', 'w', encoding='utf-8') as c:
json.dump(cookies, c)
# 使用当前存储的cookies信息登录
def get_url_with_cookies():
project_path = os.getcwd()
file_path = project_path + '/cookies/'
cookies_file = file_path + 'test_cookies'
# 读取cookies信息
test_cookies_file = open(cookies_file, 'r', encoding='utf-8')
test_cookies_str = test_cookies_file.readline()
# 加载cookies信息, 转成json格式
test_cookies_dict = json.loads(test_cookies_str, encoding='utf-8')
print('---- json dict:', test_cookies_dict)
test_cookies_file.close()
time.sleep(1)
# 清除cookies
driver.get('https://www.baidu.com/')
driver.delete_all_cookies()
time.sleep(1)
# 读入保存的cookies验证
for cookie in test_cookies_dict:
if 'expiry' in cookie:
del cookie['expiry']
print(cookie)
driver.add_cookie(cookie)
time.sleep(1)
driver.get('https://www.baidu.com/')
if __name__ == '__main__':
# 驱动Chrome浏览器
driver = webdriver.Chrome('/Users/****/Desktop/git/AI_Lesson/chromedriver')
'''
1、登录 + 保存cookies
'''
# 登录
login()
# 保存cookies
save_cookies()
'''
2、退出登录后,测试
'''
driver.get('https://www.baidu.com/')
'''
3、清除cookies,读入保存的cookies信息,验证cookies的"身份信息"
'''
# 使用当前存储的cookies信息登录
get_url_with_cookies()
time.sleep(5)
# 关闭浏览器
driver.quit()
网友评论