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

如何使用Selenium和Python在同一浏览器标签页中依次执行测试用例

问题核心原因

你两个测试文件每次都单独初始化webdriver.Chrome(),每次都会生成全新的浏览器会话,Cookie、登录状态完全不互通,所以第二个用例肯定会跳转到登录页。下面给出两种可行方案:


方案1:用测试框架管理全局浏览器实例(最推荐)

你可以用pytest这类测试框架的fixture功能,把浏览器实例定义为全局共享的,所有测试用例都复用同一个实例:
首先新建conftest.py文件存放公共fixture:

import pytest
from selenium import webdriver

@pytest.fixture(scope="session", autouse=True)
def browser():
    # 整个测试会话只初始化一次浏览器
    driver = webdriver.Chrome()
    yield driver
    # 所有用例跑完后再关闭浏览器
    driver.quit()

之后修改登录用例文件:

from pages.login_page import LoginPage

def test_login(browser):
    log_page = LoginPage(driver=browser)
    log_page.go()                     
    log_page.user_name_field.input_text('mail@gmail.com')
    log_page.password_field.input_text('Pass123')
    log_page.login_button.click()
    # 可加断言验证登录成功
    assert "首页" in browser.title

再修改创建请求用例文件:

from pages.med_page import MedPage

def test_create_request(browser):
    med_page = MedPage(driver=browser)
    med_page.go()
    # 后续写创建请求的逻辑即可

执行时直接用pytest命令跑所有用例,就会自动复用同一个浏览器窗口,登录状态会全程保留。


方案2:共享Cookie实现跨文件登录状态复用(适合必须单独跑两个文件的场景)

如果你的需求就是要单独运行两个文件,可以在第一个用例登录完成后把浏览器的Cookie持久化存储,第二个用例启动浏览器后先加载Cookie再访问页面:
登录用例末尾新增存Cookie的代码:

import json
# 登录逻辑跑完之后加
cookies = browser.get_cookies()
with open("cookies.json", "w") as f:
    json.dump(cookies, f)

第二个创建请求的用例先加载Cookie再访问页面:

from selenium import webdriver
import json
from pages.med_page import MedPage

browser = webdriver.Chrome()
# 先访问一次站点根域名,否则添加Cookie会报错
browser.get("替换为你的站点根域名地址")
# 加载之前存储的Cookie
with open("cookies.json", "r") as f:
    cookies = json.load(f)
for cookie in cookies:
    browser.add_cookie(cookie)

# 现在访问请求页就已经是登录状态
med_page = MedPage(driver=browser) 
med_page.go()

注意事项

  • 不要在每个测试文件里都单独初始化webdriver.Chrome(),除非你明确需要全新的会话
  • 如果是单流程测试用例,也可以直接把两个用例的逻辑按顺序写在同一个文件里,共用同一个browser实例,是最省事的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:01