如何在Playwright中等待页面特定脚本加载?
在Playwright中实现类似Cypress cy.intercept + cy.wait的功能
对应你在Cypress里用cy.intercept拦截并等待指定脚本加载的需求,Playwright可以通过以下方式实现:
方式一:直接等待请求完成(最简洁)
如果只是单纯等待目标GET请求加载完成,用page.waitForRequest即可,直接匹配URL并设置超时:
await page.waitForRequest('https://hello.com/script.js', { timeout: 20000 });
方式二:精确匹配请求方法
如果需要严格确保是GET请求,可以用回调函数做更精准的匹配:
await page.waitForRequest(request => request.method() === 'GET' && request.url() === 'https://hello.com/script.js', { timeout: 20000 } );
方式三:结合路由拦截(需修改响应时用)
如果需要像cy.intercept那样对请求做自定义处理(比如修改响应内容),可以结合page.route和request.finished()来等待请求完成:
// 拦截目标请求 page.route('https://hello.com/script.js', async route => { // 可在这里自定义处理,比如修改请求头、响应等 await route.continue(); // 等待请求完成 await route.request().finished(); }); // 触发页面操作后,请求会被拦截并自动等待完成
内容的提问来源于stack exchange,提问作者gvlasov
相关产品推荐
相关产品推荐

