小编Vla*_*gin的帖子

如何使用剧作家等待请求并验证响应?

这是我第一次使用 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')
        })
Run Code Online (Sandbox Code Playgroud)

这就是我尝试对剧作家做同样的事情的方式,但它会验证GET在单击“保存”按钮之前很久就发送的请求。我不知道如何正确管理这个请求,这对我的测试套件来说是一个阻碍:

        await contacts.clickSaveBtn()

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

任何帮助或建议将非常感激

javascript automated-tests playwright

17
推荐指数
2
解决办法
5万
查看次数

如何使用 Playwright 保存请求的响应正文?

我需要拦截网络请求并将其响应主体保存到变量中,这样我就可以使用 UI 上显示的值执行断言,但是当我尝试访问应该包含已保存响应主体的变量时,我会收到 [object Object]一个有效的机构。

JSON.stringify 也不能解决问题,因为我的变量变成了{"_type":"Page","_guid":"page@"}而不是实际的响应。

这是代码:

        const resp = await page.on('response', async response => {
            if (response.url().includes('/some_url/') && response.status() === 200) {
                console.log('BODY() ' + (await response.body())); //logs valid JSON response body
                return await response.body();
            }
        })
        console.log('RESPONSE' + resp); //logs RESPONSE[object Object]
Run Code Online (Sandbox Code Playgroud)

javascript automated-tests webautomation e2e-testing playwright

9
推荐指数
1
解决办法
3万
查看次数