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

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)
http://www.xdnf.cn/news/2147.html

相关文章:

  • 信令与流程分析
  • 谷歌终止新冠疫情时期结构化数据支持:SEO影响与应对策略
  • 14-DevOps-快速部署Kubernetes
  • K8S Service 原理、案例
  • 零基础教学:用GISBox将RVT转为3DTiles
  • 力扣-hot100(滑动窗口最大值)
  • Promise简介和使用
  • HDRnet——双边滤波和仿射变换的摇身一变
  • 如何在 MinGW 和 Visual Studio (MSVC) 之间共享 DLL
  • Freertos--统计所有任务栈信息以及CPU占比和钩子函数
  • Flutter Dart 集合类型List Set Map详解军 以及循环语句 forEaclh map where any every
  • 【动手学大模型开发】VSCode 连接远程服务器
  • 苹果iosApp提交审核常见问题--内购订阅篇
  • 技术视界 | 从自然中获取智慧: 仿生机器人如何学会“像动物一样思考和行动”
  • 《算法笔记》4.2小节——算法初步->哈希
  • 【Redis】hash类型
  • 每日c/c++题 备战蓝桥杯(P1252洛谷 马拉松接力赛)
  • 《深入理解 AOP》
  • 数图信息科技邀您共赴第二十五届中国零售业博览会
  • spring中的@bean注解详解
  • Springoot、Flowable快速学习
  • 制作一款打飞机游戏25:添加数据
  • C++与Python编写二进制转十进制
  • 一种双模式机器人辅助股骨干骨折钢板植入方法
  • 【AI平台】n8n入门3:第二个工作流,链接网上大模型(含三种方式)
  • wireshark从HEX转储导入使用方法
  • 数学基础 -- 欧拉恒等式的魅力:让复数旋转起来!
  • MATLAB基础应用精讲-【基础知识篇】发布和共享 MATLAB 代码
  • 网络流量分析 | 流量分析基础
  • 机器学习基础 - 回归模型之线性回归