【问题标题】:How to wait for requests and validate responses using playwright?如何使用 playwright 等待请求并验证响应?
【发布时间】:2021-06-21 16:06:22
【问题描述】:

这是我第一次使用 playwright,我不知道如何等待请求和验证响应。 我已经使用 cypress 很长时间了,管理网络请求非常容易。 例如,我需要在单击按钮后验证响应,这就是我使用 cypress 的方式:

        cy.server()
        cy.route('POST', '/api/contacts').as('newContact')

        cy.get('.btn').click()

        cy.wait('@newContact').then((response) => {
            expect(response.status).to.eq(400)
            expect(response.responseBody.data.name).to.eq('abcde')
        })

这就是我试图对剧作家做同样事情的方式,但它验证了早在点击保存按钮之前就发送的GET 请求。我不知道如何正确管理此请求,这对我的测试套件来说是个障碍:

        await contacts.clickSaveBtn()

        await page.waitForResponse((resp) => {
            resp.url().includes('/api/contacts')
            expect(resp.status()).toBe(400)
        })

任何帮助或建议将不胜感激

【问题讨论】:

    标签: javascript automated-tests playwright


    【解决方案1】:

    您需要做的是首先开始等待响应然后单击,这样waitForResponse() 就可以捕捉到由于单击而出现的实际响应。

    await Promise.all([
        page.waitForResponse(resp => resp.url().includes('/api/contacts') && resp.status() === 400),
        contacts.clickSaveBtn()
    ]);
    

    这应该处理可能的竞争条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 2013-11-18
      • 2021-08-03
      • 2021-06-21
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      相关资源
      最近更新 更多