Hướng dẫn playwright python wait for event - nhà viết kịch python chờ sự kiện

Tôi đang sử dụng nhà viết kịch trong Python và tôi muốn đưa JavaScript vào một trang xem các đột biến DOM và bắn các sự kiện tùy chỉnh và bắt những sự kiện đó trong Python.

Đây là một ví dụ về tập lệnh Python:

page.evaluate("//js code that essentially dispatches new CustomEvent('newPosts')")
page.on("newPosts", handle_posts)

Cho đến nay, không có gì xảy ra ở phía Python, như thể các sự kiện không tồn tại.

Nếu tôi kiểm tra thủ công bảng điều khiển trình duyệt, tôi có thể thấy các sự kiện chỉ bắn tốt ở phía trình duyệt (mà tôi đang bắt với document.addEventListener('newPosts', fn)

Cách sử dụng phương thức Wait_for_event trong nhà viết kịch Pythonwait_for_event method in Playwright Python

Đoạn mã Python tốt nhất bằng cách sử dụng nhà viết kịch-python

AttachTest.py

Source:AttachTest.pyAttachTest.py

Hướng dẫn playwright python wait for event - nhà viết kịch python chờ sự kiện

ble_characteristic.py

Source:ble_characteristic.pyble_characteristic.py

Tăng tốc chu kỳ kiểm tra tự động hóa của bạn với LambDatest

Tận dụng nền tảng dựa trên đám mây Lambdatest, để thực hiện các thử nghiệm tự động hóa của bạn song song và cắt giảm đáng kể thời gian thực hiện thử nghiệm của bạn. 100 phút thử nghiệm tự động hóa đầu tiên của bạn là trên chúng tôi.

Bài viết này hữu ích không?

Chạy các bài kiểm tra Python trên lưới đám mây Lambdatest

Thực hiện các thử nghiệm tự động hóa với Python python trên mạng dựa trên đám mây gồm hơn 3000 trình duyệt thực và hệ điều hành cho cả ứng dụng web và di động.Playwright Python on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.

Kiểm tra ngay bây giờ miễn phí

Cảm ơn cho báo cáo! Bạn có thể chia sẻ một repro và trang web được kiểm tra? Các bài kiểm tra trong nội bộ vượt qua có thể không có tải xuống nào do nhấp vào trang web cụ thể của bạn? Bạn có thể chạy ở chế độ gỡ lỗi PWDEBUG=1 và/hoặc ghi lại một dấu vết để xem nhìn xa hơn.

@rwoll Cảm ơn bạn đã trả lời, khi tôi gỡ lỗi trường hợp thử nghiệm này, tôi đã tìm thấy tệp tải xuống thành công, nhưng thiết bị đầu cuối có ngăn xếp lỗi này. Nhiệm vụ =
task = ============')>

def done_callback(task: "asyncio.Future[T]") -> None:
    try:

      self._value = mapping.from_maybe_impl(self._future.result())

E Playwright._IMPL._API_TYPES.TimeouterRor: Thời gian chờ 30000.0MS vượt quá trong khi chờ sự kiện "Tải xuống" e ========================= =========================== E Chờ sự kiện "Tải xuống" e ============================= ============================================
E =========================== logs ===========================
E waiting for event "download"
E ============================================================

Hướng dẫn playwright python wait for event - nhà viết kịch python chờ sự kiện

Này, gần đây tôi đã bắt đầu sử dụng nhà viết kịch, tôi đang cố gắng nghe các phản hồi của trang và theo dõi chúng.
I recently started using playwright, I am trying to listen to page responses and monitor them.

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.newPage()
        page.on('response', lambda response: asyncio.create_task(request_event_handler(response)))
        await page.goto('https://randomwebsite.com/', 0, 'networkidle')
        await browser.close()

Tất cả đều tốt cho đến nay, trình nghe sự kiện "page.on" hoạt động tốt, nhưng khi tôi đang cố gắng phân tích cơ thể của phản ứng như vậy

async def request_event_handler(response):
    if "randomstring" in response.url:
        body = asyncio.create_task(response.body())
        print(body)

Tôi nhận được một thông báo lỗi nói rằng "ngoại lệ nhiệm vụ không bao giờ được truy xuất". Thông báo lỗi đầy đủ:
full error message:

Task exception was never retrieved
future:  exception=Error('Protocol error (Network.getResponseBody): No resource with given identifier found')>
Traceback (most recent call last):
  File "run.py", line 20, in request_event_handler
    body = await response.body()
  File "/usr/local/lib/python3.8/site-packages/playwright/async_api.py", line 338, in body
    return mapping.from_maybe_impl(await self._impl_obj.body())
  File "/usr/local/lib/python3.8/site-packages/playwright/network.py", line 213, in body
    binary = await self._channel.send("body")
  File "/usr/local/lib/python3.8/site-packages/playwright/connection.py", line 39, in send
    result = await callback.future
playwright.helper.Error: Protocol error (Network.getResponseBody): No resource with given identifier found

Làm thế nào tôi có thể xử lý phản hồi.body () đang chờ?