You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium登录后跳转指定URL如何保持登录状态

解决方案

基础说明

Python版本的Selenium没有提供driver.navigate().to()方法,该方法是Java等其他语言Selenium SDK的专属实现,Python中实现页面导航的标准方法就是你已经用到的driver.get(),无需在这个方法上做额外尝试。

你遇到的driver.get()打开新标签、跳转后登录态丢失的问题,对应两个常见原因和解决方法:

  • 原因1:登录操作完成后没有等待身份凭证下发完成就直接跳转。点击登录按钮后,服务端返回的登录态Cookie、前端存储的身份标识需要一定时间写入浏览器,此时立刻跳转目标页,请求会携带未更新的旧凭证,自然会被判定为未登录。
    解决方法:登录后加显式等待,确认登录流程完全结束后再执行跳转操作,比如等待登录成功后才会出现的元素加载完成,再调用跳转方法。
  • 原因2:目标站点存在特殊前端逻辑,触发driver.get()时会强制打开新标签,新标签的上下文没有继承当前的登录态。
    解决方法:用执行原生JS的方式强制在当前标签页跳转,绕过站点的跳转拦截逻辑。

可直接运行的修改后代码

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver.get("https://ui8.net/")
print("Trying to log in on UI8")

driver.implicitly_wait(15)

driver.find_element_by_xpath(
    "/html/body/div[1]/header/div[2]/div[2]/a").click()

email_input = driver.find_element_by_id("login-email")
password_input = driver.find_element_by_id("login-password")

email_input.send_keys(data["login"])
password_input.send_keys(data["pw"])

driver.find_element_by_id("login-button").click()

# 新增:等待登录成功,确认头像元素加载完成(这里的xpath替换成你站点登录后才会出现的元素的定位规则)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "//img[contains(@class,'avatar')]"))
)
print("Logged in on UI8")

# 方式1:直接调用get(如果不会触发新标签的话用这个即可)
# driver.get("https://ui8.net/affiliate/sales")

# 方式2:用JS跳转,避免触发新标签逻辑,适用站点有跳转拦截的场景
driver.execute_script("window.location.href = 'https://ui8.net/affiliate/sales'")

如果按以上方法操作依然出现登录态丢失的情况,可以在登录完成后手动导出当前域名下的所有Cookie,跳转目标页后再把Cookie写入浏览器即可,代码实现如下:

# 登录完成后导出Cookie
cookies = driver.get_cookies()
# 跳转目标页
driver.get("https://ui8.net/affiliate/sales")
# 写入所有Cookie
for cookie in cookies:
    driver.add_cookie(cookie)
# 刷新页面让Cookie生效
driver.refresh()

内容的提问来源于stack exchange,提问作者peterlloydskubur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:45:03