如何使用Selenium二次访问同一网站不丢失登录等设置状态?
问题根因
同个driver实例下跳转同站点页面丢失登录态,核心原因是你的代码漏了关键步骤:填完账号密码后没有点击登录提交按钮。仅输入账号密码不会触发站点的身份校验流程,登录态Cookie根本没写入浏览器,此时跳转任何页面都属于未登录状态。
少数站点会做会话上下文校验,没有正常页面访问轨迹直接跳深层链接时,会主动作废当前会话,也会触发登录态丢失的问题。
修复方案
按优先级依次尝试:
- 补全登录提交流程,加显式等待确保登录态落地后再跳转
填完密码后需要定位登录提交按钮点击,同时等待页面跳转到登录后状态、确认登录态已写入,再执行搜索页跳转,修正后的完整代码如下:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time path = Service("C://chromedriver.exe") # 显式等待初始化,最长等待10秒 wait = WebDriverWait(driver, 10) driver = webdriver.Chrome(service=path) driver.get('https://testwebsite.com/') login_email_button = driver.find_element(By.XPATH,'XXXXX') login_email_button.click() username = wait.until(EC.presence_of_element_located((By.ID, 'email'))) password = driver.find_element(By.ID, 'password') username.send_keys('myuser') password.send_keys('mypassword') # 补全登录提交步骤,替换成实际页面的登录按钮定位表达式 login_submit_btn = driver.find_element(By.XPATH, 'XXXXX') login_submit_btn.click() # 等待登录完成:定位登录后才会显示的元素(比如用户头像、退出按钮),确认登录流程走完 wait.until(EC.presence_of_element_located((By.XPATH, '登录后专属元素的XPATH'))) # 预留1秒给站点异步写入Cookie,避免跳转时会话未完全落地 time.sleep(1) # 再执行搜索页跳转 driver.get('https://testwebsite.com/search?=televisions')
- 如果补全登录流程后仍丢状态,给Chrome指定固定的用户数据目录,持久化存储会话数据,避免临时实例的会话被异常清除,启动driver时增加如下配置即可:
from selenium.webdriver.chrome.options import Options chrome_options = Options() # 替换成本地自定义的空目录路径,用来持久化存储Chrome用户数据 chrome_options.add_argument('--user-data-dir=C:\\chrome_selenium_data') driver = webdriver.Chrome(service=path, options=chrome_options)
- 针对有上下文校验的站点,可以在跳转后重新写入一遍登录Cookie,避免被站点判定为非法跳转:
# 登录完成后先暂存当前所有有效Cookie cookies = driver.get_cookies() # 跳转搜索页 driver.get('https://testwebsite.com/search?=televisions') # 重新写入Cookie后刷新页面 for cookie in cookies: driver.add_cookie(cookie) driver.refresh()
注意:如果站点做了IP、设备指纹类的强校验,上述方案无效时需要单独排查站点的反爬逻辑,不属于常规会话丢失的问题范畴。
内容的提问来源于stack exchange,提问作者Faindirnomainzein
相关产品推荐
相关产品推荐

