当前位置: 首页 > news >正文

playwright的简单使用

安装

安装playwright

pip install pytest-playwright

安装浏览器

python -m playwright install

录制

python -m playwright codegen https://example.com

指定设备和cookie来打开录制,其中auth_state.json 可通过context.storage_state(path=“auth_state.json”)来获取

python -m playwright codegen --device=“iPhone 11” --load-storage=auth_state.json https://example.com
生成的代码在这里
在这里插入图片描述

简答的页面测试代码

from playwright.sync_api  import sync_playwright
import json
with sync_playwright() as p:# 非无头模式,可以看到打开浏览器执行的过程,方便调试browser = p.chromium.launch(headless=False)# 指定设备和加载上下文状态context = browser.new_context(**p.devices["iPhone 11"],storage_state="auth_state.json")#打开新页面page = context.new_page()# cookies = [#     {#         "name": "sessionId",#         "value": "204782D66497C87F00D085CDA16C0888",#         "domain": "https://example.com",#         "path": "/"        }# ]# context.add_cookies(cookies)#导航到测试urlpage.goto("https://example.com")#页面元素点击page.click("text=待生效")# context.storage_state(path="auth_state.json")#断言assert page.title() == "优惠券"# browser.close()

设置 Cookie的三种方式

1、通过 storageState 保存和加载上下文状态

 # 保存状态到文件,在当前目录下生成一个state.json文件storage = context.storage_state(path="state.json")# 创建新上下文时直接加载存储文件,实现免登录context = browser.new_context(storage_state="state.json")

2、使用 set_cookies() 手动设置 Cookie

    # cookies = [#     {#         "name": "sessionId",#         "value": "204782D66497C87F00D085CDA16C0888",#         "domain": "https://example.com",#         "path": "/"        }# ]# context.add_cookies(cookies)

3、通过文件持久化与加载 Cookie

#读取文件中的cookie再set进去
import jsonwith open("cookies.json", "r") as f:cookies = json.load(f)
context.set_cookies(cookies)
# 登录后获取 Cookie,保存到文件中
cookies = context.cookies()
with open("cookies.json", "w") as f:json.dump(cookies, f)

相关文章:

  • Linux实验课
  • SQL进阶知识:九、高级数据类型
  • 【Pandas】pandas DataFrame rsub
  • 在构造函数内部和外部定义的方法区别
  • 【时时三省】(C语言基础)循环程序举例
  • AI 场景落地:API 接口服务 VS 本地部署,哪种更适合?
  • 管家婆财贸ERP BB105.销售按结算单位价格跟踪
  • PySide与Qt工具链的深度整合
  • C语言里位操作的应用
  • 【Git】连接github时的疑难杂症(DNS解析失败)
  • 【LeetCode 热题 100】滑动窗口最大值 / 最小覆盖子串 / 轮转数组 / 缺失的第一个正数
  • 筛法求约数个数
  • Jira、PingCode、Redmine等18款缺陷管理工具对比评测
  • 数据加密技术:从对称加密到量子密码的原理与实战
  • C++[类和对象][3]
  • git 命令集
  • 设计模式-- 原型模式详解
  • mybatis-plus里的com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析
  • 【Linux网络】:套接字之UDP
  • 《免费开放”双刃剑:字节跳动Coze如何撬动AI生态霸权与暗涌危机?》
  • 六部门:进一步优化离境退税政策扩大入境消费
  • 巴黎奥运后红土首秀落败,郑钦文止步马德里站次轮
  • 时代邻里:拟收购成都合达联行科技剩余20%股权
  • 最高法:“盗链”属于信息网络传播行为,构成侵犯著作权罪
  • 拖车10公里收1900元?货车司机质疑收费过高,潮州饶平县市监局已介入
  • 巴基斯坦召开国家安全委员会紧急会议,应对印方连环举措