playwright: 通过Route对象处理请求

2023-09-18 23:23:23

Route对象

  • 可以通过 page.route() 或者browser_context.route()来设置路由
  • Route对象的方法有:abort, continue_, fallback, fetch, fulfill

abort

终止路由请求, 并且可以设置error_code,默认是failed, 其他值有 aborted, accessdenied, connectionaborted, timeout

  • 用法:
# 如果是图片类型终止请求
page.route("**/*", lambda route: route.abort() if route.request.resource_type == "image"  else route.continue_())
# or
def handle_route(route, request):
   if request.resource_type in ["image", "media", "websocket"]:
       route.abort("aborted")
   else:
       route.continue_()
page.route("**/*", handle_route)

continue_

  • 可选参数:
    • headers: 请求头
    • method: 请求方法,比如GET, POST, PUT 等
    • post_data: 请求数据
    • url: 请求url
  • 用法:
    修改以上参数值后,继续请求(modify requests)
# set headers
def handle(route, request):
   # override headers
   headers = {
       **request.headers,
       "foo": "foo-value", # set "foo" header
       "bar": None # remove "bar" header
   }
   # del headers["bar"]    # remove "bar" header
   route.continue_(headers=headers)
 # set url
   def handle(route, request):
       # override headers
       url = request.url.replace("test", "test2")
       route.continue_(url=url)
   booking.page.route("**/api/abc**", handle) # 特定的请求包含/api/abc的请求中的 test替换为请求test2

fetch

执行请求并且返回结果, 返回值类型是 APIResponse

  • 可选参数除了headers, method, post_data, url, 还有 max_redirects, timeout

    • max_redirects: 请求重定向的最大数量,默认是20
    • timeout: 默认30s, 设置为0的话表示不会timeout
  • 用法:在fulfill

fulfill

  • 可选参数:
    • body: response body
    • content_type: 响应类型
    • headers: 响应头
    • json: json response, 并且会设置content_type的值为application/json, 和body参数不能同时存在,会报错的(playwright 的1.29.0版本使用json参数这里有问题,用目前最新的1.37.0版本验证此问题已经解决)
    • path: 响应内容文件路径
    • reponse: APIResponse to route reqest
    • status: 响应状态,默认是200
  • 用法:
    修改响应数据
# 修改响应内容
page.route("**/search**", lambda route: route.fulfill(
    content_type="text/plain",
    body="page not found!"))
# 通过path修改响应内容
page.route("**/search**", lambda route: route.fulfill(path="test.json"))
# 通过json修改响应内容 
def handle(route):
    response = route.fetch()
    r_json = response.json()
    r_json["data"] = [] # 修改 响应内容中的data为[]
    route.fulfill(response=response, json=r_json)

fallback

  • 可选参数同continue_的参数

unroute

  • page.unroute() 可移除page.route()
  • browser_context.unroute() 可移除browser_context.route()
  • unroute的参数有url, handler,其中url参数必须要有, handler可选,如果handler没有值那么会移除到匹配的url的所有handler

参考文档: Route

更多推荐

服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

Vue-cli搭建SPA项目

前言VueCLI(VueCommandLineInterface)是一个用于快速搭建基于Vue.js的前端项目的工具。它是Vue.js官方提供的一个脚手架工具,旨在简化Vue.js项目的开发过程。VueCLI提供了一些强大的功能,帮助开发者轻松创建、开发和构建Vue.js应用程序VueCLI的主要特点和功能:快速创建项

如何设置代理ip服务器地址

在今天的互联网环境中,代理服务器在保护个人隐私和规避网络限制方面扮演着重要的角色。设置代理服务器地址的方式主要取决于你使用的具体软件或编程语言。在本文中,我们将分别介绍如何在Python和Java中使用HTTP代理服务器、SOCKS代理服务器以及代理池。一、使用HTTP代理服务器1、Python中设置HTTP代理在Py

Linux:GlusterFS 集群

GlusterFS介绍1)Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储.2)Glusterfs通过TCP/IP或InfiniBandRDMA网络链接将客户端的存储资块

[deeplearning]pytorch实现softmax多分类问题预测训练

写在前面:俺这两天也是刚刚加入实验室,因为之前的学习过程中用到更多的框架是tensorflow,所以突然上手pytorch多少有些力不从心了。这两个框架的主要区别在与tensorflow更偏向于工业使用,所以里面的很多函数和类都已经封装得很完整了,直接调用,甚至连w,b等尺寸都会自动调整。但是pytorch更加偏向于学

libevent 定制——libevent 定制多线程

libevent定制多线程文章目录libevent定制多线程开启多线程定制多线程调试锁的使用编写多线程程序的时候,在多个线程中同时访问同样的数据并不总是安全的。libevent的结构体在多线程下通常有三种工作方式:某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的。某些结构体具有可选的锁:可以告知libe

使用全志F1C200S TINA3.5 spinand来烧写固件几个常见问题的解决方法

使用F1C200STINA3.5SPINAND在windows下的PhoenixSuitV1.19烧写固件,现象是:1,空的nand第一次似乎提示烧写成功,但启动失败。2,第二次以及之后的烧写就会失败。3,配置以及按照官方nor切换nand的指南进行修改配置了。4,板子换了全新空白nand上去,也是一样的现象。5,以下

黑五如何大卖?TikTok三大类目已抢跑,业绩翻倍指南请查收!

备战旺季,TikTok跨境电商年度最大规模的黑五来了!此次黑五首次覆盖美国,加之上周刚刚发生的"美区全闭环事件",美国已顺势成为当下跨境电商人最为关注的“新火赛道”。另外据TikTokShop官方透露,此次黑五还汇聚英国、沙特等地区资源,市场空间巨大。所以很多商家都在问:如何发力抢占黑五商机?什么品最有可能成为爆品?营

可视化大屏报表的设计与制作 | 附成果图

大屏可视化报表是一种以大屏幕为展示媒介,通过图形、图表、文字等多种方式将数据信息呈现出来的报表形式。它具有视觉冲击力强、信息量大、交互性高等特点,能够帮助企业快速获取数据背后的价值和洞见,提高决策效率。因此近年来,大屏可视化报表越来越受企业青睐。然而,大屏可视化报表的设计与制作并非易事,需要克服诸多难点和挑战。例如,如

pytroch 颜色增强ColorJitter,墙裂推荐

目录函数参数解释:随机亮度测试,非常方便,墙裂推荐:单项测试:举例:yolov5颜色增强示例,效果差不多,opencv的:函数参数解释:函数名:torchvision.transforms.ColorJitter(brightness=0,contrast=0,saturation=0,hue=0)函数解析:随机改变一

2023华为杯E题:出血性脑卒中临床智能诊疗建模

文章目录一、背景介绍二、数据集介绍及建模目标第一题:血肿扩张风险相关因素探索建模。第一问第二问第二题:血肿周围水肿的发生及进展建模,并探索治疗干预和水肿进展的关联关系第一问第二问第三问第四问第三题:出血性脑卒中患者预后预测及关键因素探索第一问第二问第三问附件代码免费获取方式一、背景介绍一堆介绍,了解下我们为何要做这个研

热文推荐