当我等待页面上进行的API调用的响应时,PlayWright永远不会收到响应.我曾多次try 在不同页面上等待回应时看到过这种情况,但这里有一些示例代码,将范围缩小到我希望易于复制的情况.

代码超时

from playwright.sync_api import Page
from playwright.sync_api import sync_playwright

import json


with sync_playwright() as p:

    browser = p.chromium.launch(headless=False)
    page = browser.new_page()

    # Goto playwright homepage and press search box:
    page.goto("https://playwright.dev/")
    page.get_by_role('button', name='Search').click()

    # Catching response associated with filling searchfield:
    with page.expect_response("**.algolia.net/**") as response:

        # Fill a letter in searchbox to trigger the post-request:
        page.get_by_placeholder('Search docs').fill('A')

        # Printing the value of the response as a python json object:
        print(response.value.json())

        # Printing the value of the response as raw json:
        print(json.dumps(response.value.json()))

以下是响应超时时发生的错误消息

Exception has occurred: InvalidStateError
invalid state
  File "C:\Users\ronwa\Documents\playwright-test\pwright-search.py", line 23, in <module>
    print(response.value.json())
          ^^^^^^^^^^^^^^
playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded while waiting for event "response"
=========================== logs ===========================
waiting for response **.algolia.net/**
============================================================

During handling of the above exception, another exception occurred:

  File "C:\Users\ronwa\Documents\playwright-test\pwright-search.py", line 7, in <module>
    with sync_playwright() as p:
asyncio.exceptions.InvalidStateError: invalid state

推荐答案

我认为您不能用**省略整个协议前置.try 添加斜线:

from playwright.sync_api import sync_playwright


with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://playwright.dev/")
    page.get_by_role("button", name="Search").click()

    with page.expect_response("*//*.algolia.net/**") as response:
        page.get_by_placeholder("Search docs").fill("A")

    print(response.value.json())

Python相关问答推荐

从收件箱获取特定列中的重复行

取相框中一列的第二位数字

使用Python OpenCV的文本检测分割

Python中使用Delivercio进行多个请求

使用Beautiful Soup获取第二个srcset属性

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

有症状地 destruct 了Python中的regex?

什么相当于pytorch中的numpy累积ufunc

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

如何在Polars中从列表中的所有 struct 中 Select 字段?

在含噪声的3D点网格中识别4连通点模式

Pandas—在数据透视表中占总数的百分比

改进大型数据集的框架性能

从嵌套的yaml创建一个嵌套字符串,后面跟着点

删除marplotlib条形图上的底边

如何指定列数据类型

启动带有参数的Python NTFS会导致文件路径混乱

使用BeautifulSoup抓取所有链接

基于行条件计算(pandas)