Драматург Питон не получает ответа

Когда я жду ответа от вызова API, сделанного на странице, PlayWright никогда не получает ответа. Я видел это в нескольких попытках дождаться ответа на разных страницах, но вот пример кода, который, я надеюсь, сужает его до ситуации, которую легко воспроизвести.

Время действия кода истекло

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
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
170
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не думаю, что вы можете исключить весь префикс протокола с помощью **. Попробуйте добавить косую черту:

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())

Другие вопросы по теме