首页 > 编程语言 > python+playwright 学习-81 page.expect_request()捕获网络请求

python+playwright 学习-81 page.expect_request()捕获网络请求

时间:2023-09-21 22:00:16浏览次数:40  
标签:playwright python request url expect page first

前言

page.expect_request() 可以捕获网页上发出去的请求,当有多个请求时,可以根据请求url,请求方式判断。

expect_request

官方文档示例

with page.expect_request("http://example.com/resource") as first:
    page.get_by_text("trigger request").click()
first_request = first.value

# or with a lambda
with page.expect_request(lambda request: request.url == "http://example.com" and request.method == "get") as second:
    page.get_by_text("trigger request").click()
second_request = second.value

expect_request 参数说明:
url_or_predicate : typing.Union[str, typing.Pattern[str], typing.Callable[["Request"], bool]]
请求URL字符串、正则表达式或接收Request参数的函数对象, 当通过上下文选项提供base_url并且传递的url是路径时,它将通过新的url()构造函数进行合并。
timeout: typing.Optional[float] = None 设置超时时间,默认30秒,单位毫秒, 传递0以禁用超时。可以使用page.set_default_timeout()方法更改默认值。

使用示例

示例代码

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


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://127.0.0.1:8000/login.html")
    page.locator('#username').fill('yoyo')
    page.locator('#password').fill('******')

    with page.expect_request('http://127.0.0.1:8000/api/login') as first:
        page.locator('#loginBtn').click()

    first_request = first.value
    # 接口请求对象
    print(first_request.url)
    print(first_request.method)
    # 获取接口返回内容
    resp = first_request.response()
    print(resp.status)
    print(resp.json())

运行结果

http://127.0.0.1:8000/api/login
POST
400
{'message': '用户名或密码不正确'}

标签:playwright,python,request,url,expect,page,first
From: https://www.cnblogs.com/yoyoketang/p/17721069.html

相关文章

  • python: Essential Algorithms
     #encoding:utf-8#版权所有2023涂聚文有限公司#许可信息查看:#描述:#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python311#Datetime:2023/9/2121:28#User:geovindu#Product:PyCharm#Project:EssentialAlgor......
  • Python 内置数据类型详解
    内置数据类型在编程中,数据类型是一个重要的概念。变量可以存储不同类型的数据,不同类型可以执行不同的操作。Python默认内置了以下这些数据类型,分为以下几类:文本类型:str数值类型:int、float、complex序列类型:list、tuple、range映射类型:dict集合类型:set、frozenset布尔类型......
  • 【C#】【Python】【实例】统计多个文件夹下的图片
    因工作需要繁琐的进行同一目录多个文件夹下的图片统计,便使用代码来解决。需求:统计的是多少个文件夹包含了图片,并非是统计有多少张图。 我们先用Python来创建一个现场环境(巩固巩固py知识):1importos23#根目录4root_path=r"C:\Users\Desktop\1111"56forit......
  • 在不用插件和断网的情况下怎么实现编译python?
    要在不使用插件和断网的情况下编译Python代码,您通常不需要进行编译,因为Python是一种解释型语言,它将代码逐行执行而不需要显式编译过程。然而,如果您希望将Python代码打包成一个独立的可执行文件以便于分发,您可以使用一些第三方工具,如PyInstaller、cx_Freeze或Py2exe,但这些工具在没有......
  • Python中*args(参数)和 **kwargs(关键字参数)的区别
    *args--Python可以使用*args传递多个参数,但是不能使用它来传递键值对(字典)参数。**kwargs--Python另一个名为**kwargs的参数允许我们将字典类型的键值对参数传递给函数。注:两者均支持可变数量的参数传递。......
  • python打包文件过大的解决方法
       开发完一个python客户端文件后,一般需要发布为exe文件以便用户下载安装。但很多初学者开发的一个仅有几M的小软件,打包的exe文件却高达几十M甚至几百M。这里根据工作实践总结了一个有效方法分享给大家。   首先,在选定路径下创建一个文件夹folder   其次,在新建文......
  • Python Web开发:Django框架入门
    Django是一个高级的PythonWeb框架,它鼓励快速开发和干净,务实的设计。它旨在使开发人员能够快速地构建和维护高质量的Web应用程序。在本博文中,我们将介绍Django框架的基础知识,并通过具体案例说明其功能。Django安装首先,我们需要在计算机上安装Django。你可以使用pip(Python包管理器)来......
  • 携程ASE加密解密 java python
    java代码packagecom.example.trip_vip;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;importjava.io.UnsupportedEncod......
  • 携程 3DES加密解密 java python
    javapackagecom.example;importorg.springblade.core.tool.utils.*;importjavax.annotation.Nullable;importjavax.crypto.Cipher;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;importjava.util.Objects;publicclassDES3{......
  • 转~~Python:ModuleNotFoundError: No module named 模块名 错误及解决方案
    IDE中语法检查,运行都正常,Linux命令行远程运行就报错:参考文档:https://blog.csdn.net/SeaSky_Steven/article/details/106426985 1print(os.pardir)2sys.path.append(os.pardir)34'''5os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;6sys模块负责程......