python+playwright 学习-89 cookies的获取保存删除相关操作

884 篇文章 2 订阅
822 篇文章 0 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

playwright可以获取浏览器缓存的cookie信息,可以将这些cookies信息保存到本地,还可以加载本地cookies。

获取cookies 相关操作

在登录前和登录后分别打印 cookies 信息,对比查看是否获取成功。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()

    print(f"登录前,cookies为空:{context.cookies()}")
    page.goto('http://127.0.0.1:8200/users/login/')
    page.locator('#username').fill('test@qq.com')
    page.locator('#password_l').fill('123456')
    page.get_by_text('立即登录').click()

    page.wait_for_load_state('networkidle')

    # 获取cookies
    print(f"登录后,cookies:{context.cookies()}")

运行结果

登录前,cookies为空:[]
登录后,cookies:[
  {
    'name': 'csrftoken', 
    'value': 'jLpzcaH8RiG8VstuqAXGL5wWq3nycAhtxb2e9yTPKhJBk1FxHFBwpbeD0p6C4DSM', 
    'domain': '127.0.0.1', 
    'path': '/', 
    'expires': 1747969603.971844, 
    'httpOnly': False, 
    'secure': False, 'sameSite': 'Lax'
  }, {
    'name': 'sessionid', 
    'value': 'jd49av5t88d0eulmxvy0ig15vtexaort', 
    'domain': '127.0.0.1', 'path': '/', 
    'expires': 1717729603.972194, 
    'httpOnly': True, 
    'secure': False, 
    'sameSite': 'Lax'
  }
]

add_cookies 添加cookies

context.add_cookies() 可以添加 cookies,cookies的格式与 context.cookies() 获取的格式一致

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()

    cookies = [
      {'name': 'csrftoken', 
      'value': 'jLpzcaH8RiG8VstuqAXGL5wWq3nycAhtxb2e9yTPKhJBk1FxHFBwpbeD0p6C4DSM', 
      'domain': '127.0.0.1', 
      'path': '/', 
      'expires': 1747969603.971844, 
      'httpOnly': False, 
      'secure': False, 
      'sameSite': 'Lax'
      }, {
      'name': 'sessionid', 
      'value': 'jd49av5t88d0eulmxvy0ig15vtexaort', 
      'domain': '127.0.0.1', 
      'path': '/', 
      'expires': 1717729603.972194, 
      'httpOnly': True, 
      'secure': False, 
      'sameSite': 'Lax'
      }
     ]
    context.add_cookies(cookies)
    print(f"添加后,查看cookies:{context.cookies()}")

    # 访问页面,验证是否成功
    page.goto('http://127.0.0.1:8200/users/userinfo/')

添加cookies的格式与前面context.cookies() 获取cookies的格式是一致的。

storageState保存登录cookies

Playwright 提供了一种在测试中重用登录状态的方法。这样您就可以只登录一次,然后跳过所有测试的登录步骤。
Web 应用程序使用基于 cookie 或基于令牌的身份验证,其中经过身份验证的状态存储为cookie或本地存储。Playwright 提供browserContext.storageState([options])方法,可用于从经过身份验证的上下文中检索存储状态,然后创建具有预填充状态的新上下文。
Cookie 和本地存储状态可以跨不同的浏览器使用。它们取决于您的应用程序的身份验证模型:某些应用程序可能需要 cookie 和本地存储。

以下代码片段从经过身份验证的上下文中检索状态,并使用该状态创建一个新上下文。

from playwright.sync_api import Playwright, sync_playwright, expect
# 上海悠悠 wx:283340479  
# blog:https://www.cnblogs.com/yoyoketang/

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://github.com/login')

    # Interact with login form
    page.get_by_label("Username or email address").fill("yoyo")
    page.get_by_label("Password").fill("*********")
    page.get_by_role("button", name="Sign in").click()
    # Continue with the test

    # 保存storage state 到指定的文件
    storage = context.storage_state(path="auth/state.json")

    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

图片

于是在本地会保存一个state.json文件

这样在其它地方就可以使用本地的cookies

# Create a new context with the saved storage state.context = browser.new_context(storage_state="state.json")

需注意的是context.storage_state()保存的cookies格式和 context.cookies() 获取的cookies格式是不一样的。
所以加载本地的cookies格式不能直接保存context.cookies() 获取的cookies。

清空 clear_cookies()

1.43 版本后,browser_context.clear_cookies()支持仅删除某些cookie的筛选器。

# Clear all cookies.context.clear_cookies()# New: clear cookies with a particular name.context.clear_cookies(name="session-id")# New: clear cookies for a particular domain.context.clear_cookies(domain="my-origin.com")

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值