有没有办法让伪造者的waitUntil“ networkidle”只考虑XHR(ajax)请求?

尼古拉斯·迪广场

我在测试应用程序中使用puppeteer评估网页的基于javascript的HTML。

这是我用来确保所有数据都已加载的行:

await page.setRequestInterception(true);
page.on("request", (request) => {
  if (request.resourceType() === "image" || request.resourceType() === "font" || request.resourceType() === "media") {
    console.log("Request intercepted! ", request.url(), request.resourceType());
    request.abort();
  } else {
    request.continue();
  }
});
try {
  await page.goto(url, { waitUntil: ['networkidle0', 'load'], timeout: requestCounterMaxWaitMs });
} catch (e) {

}

这是等待ajax请求完成的最佳方法吗?

感觉不错,但是我不确定是否应该使用networkidle0,networkidle1等?

朱利安·塔辛

您可以使用prepare-xhr-puppeteer,这是一个公开承诺的库,等待所有待处理的xhr请求得到解决。

像这样使用它:

const puppeteer = require('puppeteer');
const { PendingXHR } = require('pending-xhr-puppeteer');

const browser = await puppeteer.launch({
  headless: true,
  args,
});

const page = await browser.newPage();
const pendingXHR = new PendingXHR(page);
await page.goto(`http://page-with-xhr`);
// Here all xhr requests are not finished
await pendingXHR.waitForAllXhrFinished();
// Here all xhr requests are finished

免责声明:我是pending-xhr-puppeteer的维护者

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用FakeItEasy,有没有办法伪造只写属性的设置器?

有没有办法只生成随机的“时间”?

有没有办法在Firebase中减少请求?

有没有办法同步ajax调用

有没有办法在门户页面上呈现 freshservice 应用程序(请求者视图)

有没有办法从ajax预检请求中获取调试信息?

有没有办法在 cypress 运行中保存完整的 XHR 有效负载?

有没有办法只导入带有 0 和 1 的 MNIST 图像?

有没有办法只替换页面上所有元素的innerText?

有没有办法只接受具有特定名称的输入按钮的文件?

有没有办法查看所有请求的动画帧的列表?

有没有办法根据创建日期获取所有拉取请求

有没有办法找到合金分析仪考虑的案例数量?

有没有办法优先考虑我在系统名称空间中写过的类

有没有办法让 css 考虑到 svg 占用多少空间

Squarespace – 有没有办法只在存档块中显示特定类别?

有没有办法像@JsonFilter那样只打印HashMap的值?

有没有办法检查 npm 包是否需要发布,然后只进行发布?

有没有办法只查看表对象的最后一个实例

有没有办法只使用 Golang Glob 列出目录?

有没有办法只使用 PHP 获得最高和最低分数?

有没有办法只初始化一次阵列?

有没有办法只查看Debian-experimental的软件包清单?

有没有办法实现只写一次列表进行判断?

有没有办法只组装一种风味的androidTest构建?

有没有办法只提取参数而不提取实体?

有没有办法让 A 类的变量只被特定接口的类修改?

有没有办法只在索引上显示PWA“添加到主屏幕”?

Mac(os x):有没有办法只安装redis-cli?