首页 > 编程语言 >python+playwright 学习-77 playwright 发送接口请求APIRequestContext

python+playwright 学习-77 playwright 发送接口请求APIRequestContext

时间:2023-08-28 13:24:29浏览次数:36  
标签:playwright python request sync page 77 context response

前言

每个Playwright浏览器上下文都有与其关联的APIRequestContext实例,该实例与浏览器上下文共享cookie存储,可以通过browser_context.request或page.request访问。也可以通过调用api_request.new_context()手动创建一个新的APIRequest上下文实例。

通过浏览器发请求

可以通过browser_context.request或page.request发送接口请求,该实例与浏览器上下文共享cookie存储。

from playwright.sync_api import sync_playwright, expect


REPO = "test-repo-1"
USER = "github-username"
API_TOKEN = "xx1122"


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(base_url="https://api.github.com")
    # context 上下文创建 request 请求对象
    api_request_context = context.request
    page = context.new_page()

    # 访问浏览器页面
    page.goto('https://api.github.com')

    # Create a repository.
    response = api_request_context.post(
        "/user/repos",
        headers={
            "Accept": "application/vnd.github.v3+json",
            # Add GitHub personal access token.
            "Authorization": f"token {API_TOKEN}",
        },
        data={"name": REPO},
    )
    assert response.ok
    assert response.json()["name"] == REPO

    # Delete a repository.
    response = api_request_context.delete(
        f"/repos/{USER}/{REPO}",
        headers={
            "Accept": "application/vnd.github.v3+json",
            # Add GitHub personal access token.
            "Authorization": f"token {API_TOKEN}",
        },
    )
    assert response.ok
    assert response.body() == '{"status": "ok"}'

page.request() 发送请求

也可以通过page.request() 发送接口请求

from playwright.sync_api import sync_playwright, expect

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()

    page.goto('https://www.cnblogs.com/yoyoketang/')
 

    # 发post请求
    resp = page.request.post(
        url="http://www.example.com/",
        data={"user": "test", "email": "[email protected]"}
    )
    print(resp.status)
    print(resp.headers)
    print(resp.body())

APIRequestContext

不打开浏览器的情况下,直接发接口请求也是可以的

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    context = p.request.new_context()
    response = context.get("https://example.com/user/repos")
    assert response.ok
    assert response.status == 200
    assert response.headers["content-type"] == "application/json; charset=utf-8"
    assert response.json()["name"] == "foobar"
    assert response.body() == '{"status": "ok"}'

标签:playwright,python,request,sync,page,77,context,response
From: https://www.cnblogs.com/yoyoketang/p/17662028.html

相关文章

  • 使用python监控HDFS文件的增量【优化中】
    1.目录1、需求和步骤2、项目结构3、项目代码    3.1建表语句hdfs_Ctreate_table    3.2删除文件记录hdfs_delete_file_record.py    3.3文件路径的小时监控hdfs_path_Monitor.py    3.4文件路径的天监控hdfs_path_Monitor_day.py    3.5文......
  • python使用docx向word文档中表格插入图片并固定缩放
    使用python的docx模块对word文档进行编辑时,有时候需要向表格中插入图片,但是插入的图片一般是按照原图片的大小插入的,即使你的word文档一开始就设置好了固定宽高,似乎也是不起作用,这个时候就需要在插入后,用python去调整图片的宽高。示例代码:fromdocximportDocumentfromdocxi......
  • python 高效处理EXCEL对比
    #coding=utf-8importxlwingsasxwimportpandasaspdimporttime#记录打开表单开始时间start_open_time=time.time()#指定不显示地打开Excel,读取Excel文件app=xw.App(visible=False,add_book=False)wb=app.books.open('D:/PYTHON/TEST_CODE/Book300s.xlsx')#......
  • Python爬虫网络安全:优劣势和适用范围分析
    各位Python程序猿大佬们!在当今数字化时代,网络安全是至关重要的。保护你的网络通信安全对于个人和组织来说都是非常重要的任务。在本文中,我将与你一起探讨Python网络安全编程中的代理、虚拟专用网络和TLS这三个关键概念,分析它们的优劣势和适用范围,帮助你更好地保护你的网络通信。1.......
  • Python爬虫追踪新闻事件发展进程及舆论反映
    大家好!在当今信息爆炸的时代,了解新闻事件的发展进程和舆论反映对于我们保持对时事的敏感度和了解社会动态至关重要。在本文中,我将与你分享使用Python爬虫追踪新闻事件发展进程和舆论反映的方法,帮助你获取及时、全面的新闻信息。1.爬取新闻网站首先,我们需要选择合适的新闻网站作为......
  • python中计算点突变的数目
     001、直接比较计算[root@PC1test01]#lsa.fab.fatest.py[root@PC1test01]#cata.fa##测试dna序列GAGCCTACTAACGGGAT[root@PC1test01]#catb.fa##测试dna序列CATCGTAATGACGGCCT[root@PC1test01]#cattest.py##计算程序#!/usr/bin/envpython......
  • centos7 python3安装注意点
    1.安装,参考网上教程,不再重复赘述https://www.cnblogs.com/mindtechnist/p/17243882.html2.注意点:网上多数文章中为了方便,会直接在/usr/bin目录下重建python的软链接,指向python3,由于centos默认的python版本为2.7,2和3无法兼容,故会导致很多基础组件出现调用异常,如yum、firewall-cm......
  • Ubuntu16.04安装OpenEXR与openexr-python
    1,安装库文件sudoapt-getinstallopenexr 2,安装python接口(注意版本问题) 我使用的python3.6,安装1.3.2版本的没有问题,如果python是3.8,可以尝试选择安装1.3.9等高版本pipinstallOpenEXR==1.3.2-ihttps://pypi.tuna.tsinghua.edu.cn/simple 如果没有指定OpenEXR的......
  • Python exe文件打包神器-Nuitka! 转载
    一.pyinstaller和Nuitka使用感受1.1使用需求这次也是由于项目需要,要将python的代码转成exe的程序,在找了许久后,发现了2个都能对python项目打包的工具——pyintaller和nuitka。这2个工具同时都能满足项目的需要:隐藏源码。这里的pyinstaller是通过设置key来对源码进行加密的;而nuitka......
  • Python学习笔记
    文档中函数的参数带方括号([or])代表可选参数列表(list)基础列表是可迭代对象,列表有序矩阵#创建列表[1,2,3,4,5]#列表可以包含不同的数据类型[1,2,3,"hello"]#可以使用下表索引(从0开始)rhyme[1]rhyme[-1]#切片(不包含末尾)rhyme[0:3]rhyme[:3]rhyme[3:]r......