Angular 应用程序的编剧同步问题
Playwright synchronization issue with Angular application
我正在尝试使服务查询数据库并将数据呈现到 UI 的场景自动化。这个渲染过程需要很长时间(大约 3 分钟)。
剧作家不会等到页面加载完成。
我尝试使用
await page.waitForLoadState();,
await page.waitForLoadState('networkidle');
await page.waitForLoadState('domcontentloaded'); and
await page.setDefaultNavigationTimeout(150);
我正在开发一个 angular 应用程序,我在很多情况下都会遇到这些类型的同步问题。
实现自定义等待函数
直到 grid/table/ 或其他对象完全加载:
最简单的方法可能是使用 page.waitForFunction 等待 grid/table 填充足够的行。
例如,您可以使用以下代码等到 table 中加载了 1000 行:
await page.waitForFunction(() => document.querySelectorAll('#table-selector tr').length >= 1000);
等待回复
WaitForResponse 为我工作,用于等待具有自定义超时的长时间服务响应:
通常,您必须在导致调用的操作发生之前开始等待响应。
// Alternative way with a predicate.
const [response] = await Promise.all([
// Waits for the next response matching some conditions
page.waitForResponse(response => response.url() === 'https://example.com' && response.status() === 200 , { timeout: 300000 }),
// Triggers the response
page.click('button.triggers-response'),
]);
验证响应正文
验证响应状态还不够,还需要验证响应正文的情况。
const promise= page.waitForResponse(/abcd/); // Regex
await page.goto('https://myurl.com', {waitUntil: 'networkidle', timeout: 30000});
var response = await promise; // waiting for promise
let resp = await response.json();
console.log(resp);
await browser.close();
来源:https://playwright.dev/docs/api/class-page#page-wait-for-response
我正在尝试使服务查询数据库并将数据呈现到 UI 的场景自动化。这个渲染过程需要很长时间(大约 3 分钟)。 剧作家不会等到页面加载完成。 我尝试使用
await page.waitForLoadState();,
await page.waitForLoadState('networkidle');
await page.waitForLoadState('domcontentloaded'); and
await page.setDefaultNavigationTimeout(150);
我正在开发一个 angular 应用程序,我在很多情况下都会遇到这些类型的同步问题。
实现自定义等待函数
直到 grid/table/ 或其他对象完全加载:
最简单的方法可能是使用 page.waitForFunction 等待 grid/table 填充足够的行。
例如,您可以使用以下代码等到 table 中加载了 1000 行:
await page.waitForFunction(() => document.querySelectorAll('#table-selector tr').length >= 1000);
等待回复
WaitForResponse 为我工作,用于等待具有自定义超时的长时间服务响应:
通常,您必须在导致调用的操作发生之前开始等待响应。
// Alternative way with a predicate.
const [response] = await Promise.all([
// Waits for the next response matching some conditions
page.waitForResponse(response => response.url() === 'https://example.com' && response.status() === 200 , { timeout: 300000 }),
// Triggers the response
page.click('button.triggers-response'),
]);
验证响应正文
验证响应状态还不够,还需要验证响应正文的情况。
const promise= page.waitForResponse(/abcd/); // Regex
await page.goto('https://myurl.com', {waitUntil: 'networkidle', timeout: 30000});
var response = await promise; // waiting for promise
let resp = await response.json();
console.log(resp);
await browser.close();
来源:https://playwright.dev/docs/api/class-page#page-wait-for-response