当前位置: 代码网 > it编程>编程语言>其他编程 > playwright保持网站的登录状态的几种方法

playwright保持网站的登录状态的几种方法

2026年01月25日 其他编程 我要评论
在使用 playwright 自动化测试时,为了保持网站的登录状态,可以通过以下方法实现:方法 1:保存和加载浏览器上下文的存储状态playwright 提供了 storagestate 功能,可以保

在使用 playwright 自动化测试时,为了保持网站的登录状态,可以通过以下方法实现:

方法 1:保存和加载浏览器上下文的存储状态

playwright 提供了 storagestate 功能,可以保存当前的浏览器存储状态(包括登录的会话信息),并在后续会话中加载。

实现步骤:

  1. 登录并保存状态
    在第一次运行时,执行登录操作并将状态保存到文件。

    from playwright.sync_api import sync_playwright
    
    def save_login_state():
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=false)
            context = browser.new_context()
            page = context.new_page()
    
            # 打开登录页面并完成登录
            page.goto("https://example.com/login")
            page.fill("input[name='username']", "your_username")
            page.fill("input[name='password']", "your_password")
            page.click("button[type='submit']")
    
            # 等待登录完成
            page.wait_for_url("https://example.com/dashboard")
    
            # 保存登录状态到文件
            context.storage_state(path="state.json")
            browser.close()
    
    save_login_state()
    
  2. 加载保存的状态
    在后续运行中,加载保存的状态文件,避免重复登录。

    from playwright.sync_api import sync_playwright
    
    def use_saved_state():
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=false)
            # 使用之前保存的存储状态
            context = browser.new_context(storage_state="state.json")
            page = context.new_page()
    
            # 直接访问需要登录的页面
            page.goto("https://example.com/dashboard")
            print(page.title())
            browser.close()
    
    use_saved_state()
    

方法 2:使用持久化上下文

playwright 支持使用带有持久化存储的浏览器上下文,自动保留登录状态。

实现步骤:

  1. 创建持久化上下文
    指定一个文件夹来保存浏览器会话数据:

    from playwright.sync_api import sync_playwright
    
    def use_persistent_context():
        with sync_playwright() as p:
            # 创建持久化上下文
            user_data_dir = "user_data"
            browser = p.chromium.launch_persistent_context(
                user_data_dir, headless=false
            )
            page = browser.new_page()
    
            # 打开需要登录的页面
            page.goto("https://example.com/login")
    
            # 如果首次访问,登录后数据会自动保存到 user_data_dir
            page.fill("input[name='username']", "your_username")
            page.fill("input[name='password']", "your_password")
            page.click("button[type='submit']")
            page.wait_for_url("https://example.com/dashboard")
    
            browser.close()
    
    use_persistent_context()
    
  2. 后续运行直接加载会话数据
    在后续运行中,直接加载同一 user_data_dir,会话数据会自动保留:

    from playwright.sync_api import sync_playwright
    
    def use_existing_persistent_context():
        with sync_playwright() as p:
            # 使用之前的持久化上下文
            browser = p.chromium.launch_persistent_context(
                "user_data", headless=false
            )
            page = browser.new_page()
    
            # 访问需要登录的页面
            page.goto("https://example.com/dashboard")
            print(page.title())
            browser.close()
    
    use_existing_persistent_context()
    

方法 3:使用 cookies 手动保存和加载会话

通过手动保存和加载 cookies 来保持登录状态。

实现步骤:

  1. 保存 cookies

    from playwright.sync_api import sync_playwright
    import json
    
    def save_cookies():
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=false)
            context = browser.new_context()
            page = context.new_page()
    
            page.goto("https://example.com/login")
            page.fill("input[name='username']", "your_username")
            page.fill("input[name='password']", "your_password")
            page.click("button[type='submit']")
            page.wait_for_url("https://example.com/dashboard")
    
            # 保存 cookies 到文件
            cookies = context.cookies()
            with open("cookies.json", "w") as f:
                json.dump(cookies, f)
            browser.close()
    
    save_cookies()
    
  2. 加载 cookies

    from playwright.sync_api import sync_playwright
    import json
    
    def load_cookies():
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=false)
            context = browser.new_context()
    
            # 加载 cookies
            with open("cookies.json", "r") as f:
                cookies = json.load(f)
                context.add_cookies(cookies)
    
            page = context.new_page()
            page.goto("https://example.com/dashboard")
            print(page.title())
            browser.close()
    
    load_cookies()
    

方法选择

  • 方法 1(存储状态):适合短期保留登录状态,并易于分享状态文件。
  • 方法 2(持久化上下文):适合长期保留会话(类似普通浏览器),无需额外管理文件。
  • 方法 3(cookies 管理):适合需要灵活操作 cookies 的场景。

到此这篇关于playwright保持网站的登录状态的几种方法的文章就介绍到这了,更多相关playwright 登录状态内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com