本文概述
- A.全局选项卡
- B.在当前页面上
要解决此问题, 你将有2个选项, 要么增加配置中的超时时间, 要么完全删除它。就个人而言, 我更喜欢取消限制, 因为我知道与我合作的页面最终有一天会加载。
在本文中, 我将向你简要介绍两种绕过此限制的方法。
A.全局选项卡当我在同一选项卡中浏览多个页面时, 我更喜欢的选项是删除用于浏览的选项卡上的超时限制。例如, 要删除限制, 你应该添加:
await page.setDefaultNavigationTimeout(0);
在Puppeteer的已创建页面上可用的setDefaultNavigationTimeout方法允许你定义选项卡的超时, 并希望将其作为第一个参数(以毫秒为单位)。值为0表示时间不受限制。以下代码段显示了如何在实际示例中执行此操作:
// Require puppeteerconst puppeteer = require('puppeteer');
(async () =>
{// Create an instance of the chrome browser// But disable headless mode !const browser = await puppeteer.launch({headless: false});
// Create a new pageconst page = await browser.newPage();
// Configure the navigation timeoutawait page.setDefaultNavigationTimeout(0);
// Navigate to some website e.g Our Code Worldawait page.goto('http://ourcodeworld.com');
// Do your stuff// ...})();
B.在当前页面上另外, 对于特定页面, 如果你处理多个页面使用不同的变量, 则应该能够在page.goto方法的配置对象中作为选项来指定上下文限制:
await page.goto('https://ourcodeworld.com', {waitUntil: 'load', // Remove the timeouttimeout: 0});
以下代码段在一个真实的示例中显示了如何执行此操作:
// Require puppeteerconst puppeteer = require('puppeteer');
(async () =>
{// Create an instance of the chrome browser// But disable headless mode !const browser = await puppeteer.launch({headless: false});
// Create a new pageconst page = await browser.newPage();
// Configure the navigation timeoutawait page.goto('https://ourcodeworld.com', {waitUntil: 'load', // Remove the timeouttimeout: 0});
// Navigate to some website e.g Our Code Worldawait page.goto('http://ourcodeworld.com');
// Do your stuff// ...})();
【如何解决Puppeteer TimeoutError(导航超时超过30000 ms)】编码愉快!
推荐阅读
- 如何使用Lena.js使用JavaScript向浏览器中的图像添加图像滤镜(照片效果)
- 使用appJar(基于Tkinter的UI)使用Python创建非常简单的图形用户界面
- 如何在Windows中使用pyinstaller从Python脚本创建可执行文件(.exe)
- 如何使用浏览器中的JavaScript从剪贴板检索图像
- 如何使用JavaScript将PDF转换为文本(从PDF提取文本)
- 使用浏览器工具或创建自己的基准来使用JavaScript衡量功能的性能
- 如何在浏览器中使用JavaScript创建Gameboy Advance Emulator(GBA)
- Linux(内核剖析):09---进程调度之Linux调度的实现(struct sched_entityschedule())
- Linux(内核剖析):08---进程调度之Linux调度算法(调度器类公平调度(CFS))