# 不输入用户名和密码,获取cookie实现登录
# 登录成功后,cookies里面会保存sessionid
# 将该sessionid添加到driver里面
# 注意: 1.selenium启动某个浏览器时,它启动的是一个全新的浏览器
# 没有带任何cookie,需要程序加载这些cookie
# 2.必须首先加载网站,这样Selenium 才能知道cookie 属于哪个网站,即使加载网站的行为对我们没任何用处
# 3.退出或者注销登录,sessionid失效,下次访问生成新的sessionid
# 方法一 手动获取sessionid
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://127.0.0.1:8000') # 先加载网站
driver.maximize_window()
driver.add_cookie({'name': 'sessionid', 'value': '5u8jziskb2065vssla8ea5s7yvh2ucag'})
driver.get('http://127.0.0.1:8000')
driver.refresh()
time.sleep(5)
driver.quit()
# 方法二 代码自动获取cookie
driver1 = webdriver.Chrome()
driver1.maximize_window()
driver1.get('http://127.0.0.1:8000/api-auth/login/?next=/')
driver1.find_element_by_id('id_username').send_keys('admin')
driver1.find_element_by_id('id_password').send_keys('123')
driver1.find_element_by_id('submit-id-submit').click()
time.sleep(2)
save_cookie = driver1.get_cookies() # 列表里面有两个字典cookie信息,一个是登录之前的,一个是登录之后的
print(save_cookie)
driver1.quit()
driver2 = webdriver.Chrome()
driver2.maximize_window()
# 必须首先加载网站,这样selenium才知道cookie是属于哪个网站的
driver2.get('http://127.0.0.1:8000/api-auth/login/?next=/')
print(driver2.get_cookies())
driver2.delete_all_cookies() # 一旦加载网站,即使没登录,也会产生一个cookie,需要删除cookie
for cookie in save_cookie:
driver2.add_cookie(cookie) # 添加driver1登录成功之后的cookie
driver2.get('http://127.0.0.1:8000')
print(driver2.get_cookies())
time.sleep(3)
driver2.quit()
web自动化测试绕过cookie实现登录
最新推荐文章于 2024-05-23 09:34:53 发布