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

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

时间:2023-10-27 12:37:03浏览次数:40  
标签:playwright http 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:


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,http,python,request,url,expect,page,first
From: https://blog.51cto.com/u_15249893/8052655

相关文章

  • 用Python的Pygame包做飞行棋
    最近学了下pygame,感觉非常有意思,于是用自己的理解纯手工敲了几个游戏,下面记录一下我做飞行棋的思路过程: 运行结果玩家轮流投骰子然后移动飞机,全程只用鼠标操作,右上方会提示当前的轮次及操作 基础设置1)首先是导包和初始化一些变量,定义SIZE=40表示长方形的......
  • 【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例|附代码数据
    最近我们被客户要求撰写关于用户流失数据挖掘的研究报告,包括一些图形和统计输出。即使是同一种植物,由于生长的地理环境的不同,它们的特征会有所差异。例如鸢尾花,可分为山鸢尾、杂色鸢尾、维吉尼亚鸢尾。假设此时您得到了一朵鸢尾花,如何判断它属于哪一类呢?支持向量机算法原理·其......
  • Python用正则化Lasso、岭回归预测房价、随机森林交叉验证鸢尾花数据可视化2案例
    机器学习模型的表现不佳通常是由于过度拟合或欠拟合引起的,我们将重点关注客户经常遇到的过拟合情况。过度拟合是指学习的假设在训练数据上拟合得非常好,以至于对未见数据的模型性能造成负面影响。该模型对于训练数据中没有的新实例的泛化能力较差。复杂模型,如随机森林、神经网络和X......
  • 通过requests库使用HTTP编写的爬虫程序
    使用Python的requests库可以方便地编写HTTP爬虫程序。以下是一个使用requests库的示例:importrequests#发送HTTPGET请求response=requests.get("http://example.com")#检查响应状态码ifresponse.status_code==200:#获取响应内容html=response.text......
  • Python给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例【杭州多测
    ipv4地址的格式:(1~255).(0 ~255).(0 ~255).(0 ~255)1.正则表达式importredefcheck_ip(one_str):compile_ip=re.compile('^(([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$')ifcompile_ip.match(one_str):......
  • 在线问诊 Python、FastAPI、Neo4j — 创建症状节点
    目录症状数据创建节点附学习电子病历中,患者主诉对应的相关检查,得出的诊断以及最后的用药情况。症状一般可以从主诉中提取。症状数据symptom_data.csvCSV中,没有直接一行一个症状,主要想后面将症状=>疾病做关联,最后会在一个Excel中表达所以每行实际对应一个症病,但在创建节点......
  • window安装python3
    win10安装python3a.下载python3网址https://www.python.org/downloads/,点击下图中红框内的按钮下载Python3b.安装python3打开上一步中下载好的文件,显示如下图所示界面。先勾选下图中红色框内的复选框,然后点击紫色框内的“InstallNow”进行安装安装完成后,显示下......
  • 一周学会python2-IDE
    2-IDE2.1集成开发环境的特点与库和框架的简单集成集成面向对象设计语法高亮代码自动完成版本控制除了这些功能,集成开发环境还能为开发人员提供高级调试功能。2.2PyCharmPyCharm是由软件工具开发领域的先驱JetBrains开发的仅用于Python的集成开发环境。最初,JetBrains......
  • 21.8 Python 使用BeautifulSoup库
    BeautifulSoup库用于从HTML或XML文件中提取数据。它可以自动将复杂的HTML文档转换为树形结构,并提供简单的方法来搜索文档中的节点,使得我们可以轻松地遍历和修改HTML文档的内容。广泛用于Web爬虫和数据抽取应用程序中。读者如果需要使用这个库,同样需要执行pip命令用以安装:安装PI......
  • python 字符串str与字典dict转换
    目录python字符串str与字典dict转换字典转字符串字符串转字典带引号不带引号python字符串str与字典dict转换字典转字符串c={'a':'1','b':'1'}b=str(c)print(b,type(b))字符串转字典字符串转字典分两种情况,需要根据你的字符串内容是否带引号决定,如#带引号c={'a......