javascript - 如何使用 Puppeteer 等待事件触发的页面重新加载?

标签 javascript node.js puppeteer google-chrome-headless

我正在尝试安全地处理页面的行为,该页面在 select 元素上使用浏览器内事件来触发页面重新加载 (POST)。 URL 相同,但页面会使用相同的 HTML 重新加载,唯一的区别是表中内容的排序顺序。我尝试了几种方法,但不知何故都不可靠,我怎样才能实现这样的目标:

    try {
        await page.select('select[name=sort]', 'size'); 
        await page.waitForNextPageReload();
        await page.waitForSelector('select[name=sort]');
    } catch (error) {
        console.log('Error sorting page.');
    }

基本上,waitForNextPageReload不存在,但我正在寻找可以提供类似结果的东西。我尝试添加“延迟”,但我正在寻找更可靠的方法来正确管理错误。

最佳答案

选择和导航 promise 之间可能存在竞争条件(请参阅示例 herehere )。你能尝试一下这个方法吗?

await Promise.all([
  page.select('select[name=sort]', 'size'),
  page.waitForNavigation(),
]);

await page.waitForSelector('select[name=sort]');

关于javascript - 如何使用 Puppeteer 等待事件触发的页面重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084570/

相关文章:

javascript - 如何从 MVC Controller 方法中的 HTTP Post 方法提取数据?

javascript - FS如何自动制作文件夹?

javascript - Puppeteer 和 JSHandle@node aria-label 如何操作?

javascript - 如何在 stenciljs E2E 测试中移除焦点

node.js - 错误 : Failed to launch the browser process! Whatsapp web js | Azure 门户 Linux puppeteer 师

javascript - 悬停后永久显示图像的颜色

javascript - Google Chrome 扩展临时文件的位置

javascript - 如何从 JSON 数组调用函数

node.js - 登录后需要做什么才能从 mongodb 中提取用户的个人资料?

node.js - 使用 Netlify Functions 部署 React 应用程序时出现错误 "SyntaxError: Cannot use import statement outside a module"