具有 AJAX 负载的 Playwright 步骤的输出执行时间
Output execution time for a Playwright step with AJAX payload
我试图在我的测试运行时将一些关键测量值转储到控制台,而不是从报告器输出中获取它们,但我看不到如何抓住执行最后一步所花费的时间。这是基于 request.timing() 文档的简化版本,但我不认为我正在做的事情被归类为请求:
const { test, expect } = require('@playwright/test');
test('ApplicationLoadTime', async ({ page }) => {
// Wait for applications to load
await page.waitForSelector('img[alt="Application"]');
// Not working! - get time for step execution
const [fir] = await Promise.all([
page.click('text=Further information requested'),
page.waitForSelector('img[alt="Application"]')
]);
console.log(fir.timing());
});
单击“请求的更多信息”会导致根据后台调用 AJAX 修改页面,应用程序 img 的外观告诉我它已完成。这是可能的还是我需要依赖报告?
fir
在您的代码中将成为 undefined
,因为 page.click()
不会 return 任何东西。您需要等待您感兴趣的时间请求,使用 page.waitForEvent('requestfinished')
or waitForNavigation
:
const { test, expect } = require('@playwright/test');
test('ApplicationLoadTime', async ({ page }) => {
// Wait for applications to load
await page.waitForSelector('img[alt="Application"]');
const [fir] = await Promise.all([
// Wait for the request
page.waitForEvent('requestfinished', r => r.url() == '<url of interest>'),
page.click('text=Further information requested'),
page.waitForSelector('img[alt="Application"]')
]);
console.log(fir.timing());
});
我试图在我的测试运行时将一些关键测量值转储到控制台,而不是从报告器输出中获取它们,但我看不到如何抓住执行最后一步所花费的时间。这是基于 request.timing() 文档的简化版本,但我不认为我正在做的事情被归类为请求:
const { test, expect } = require('@playwright/test');
test('ApplicationLoadTime', async ({ page }) => {
// Wait for applications to load
await page.waitForSelector('img[alt="Application"]');
// Not working! - get time for step execution
const [fir] = await Promise.all([
page.click('text=Further information requested'),
page.waitForSelector('img[alt="Application"]')
]);
console.log(fir.timing());
});
单击“请求的更多信息”会导致根据后台调用 AJAX 修改页面,应用程序 img 的外观告诉我它已完成。这是可能的还是我需要依赖报告?
fir
在您的代码中将成为 undefined
,因为 page.click()
不会 return 任何东西。您需要等待您感兴趣的时间请求,使用 page.waitForEvent('requestfinished')
or waitForNavigation
:
const { test, expect } = require('@playwright/test');
test('ApplicationLoadTime', async ({ page }) => {
// Wait for applications to load
await page.waitForSelector('img[alt="Application"]');
const [fir] = await Promise.all([
// Wait for the request
page.waitForEvent('requestfinished', r => r.url() == '<url of interest>'),
page.click('text=Further information requested'),
page.waitForSelector('img[alt="Application"]')
]);
console.log(fir.timing());
});