这是我打开标签页的方式
await page.goto( url , {timeout: 90000} )
.catch(function(error){
page.close();
}
);
我在一个循环中在一个浏览器中打开多个页面,一个粒子页面(这是我打开的第一个选项卡)不会第一次打开(第一个循环),并且出现超时错误,它可以在下一个循环中正常工作。 ..我试图捕获屏幕截图,而它只是一个空白页..我在相同的代码上可以正常工作
所以我的问题是是否仍要收集有关为何无法打开页面的信息?是迟到的反应还是其他?
答案 0 :(得分:3)
Puppeteer文档包括debugging tips,其中列出:
使用headless : false
关闭无头模式以查看浏览器显示的内容:
const browser = await puppeteer.launch( { headless : false } );
使用slowMo
选项放慢Puppeteer的操作,以帮助查看发生了什么事情:
const browser = await puppeteer.launch({
headless : false,
slowMo : 200 // slow down by 200ms
});
捕获控制台输出:
page.on( 'console', msg => { console.log( 'Page Log from Evaluate:', msg.text() ); } );
await page.evaluate( () => { console.log( 'Current URL:', location.href ); } );
停止测试执行并在浏览器中使用调试器:
在启动Puppeteer时使用devtools : true
:
const browser = await puppeteer.launch( { devtools : true } );
更改默认测试超时:
jest.setTimeout( 100000 ); // Jest
jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000; // Jasmine
this.timeout( 100000 ); // Mocha
添加内部带有debugger
的评估语句,或将debugger
添加至现有的评估语句:
await page.evaluate( () => { debugger; } );
启用详细日志记录:
# Basic verbose logging
env DEBUG="puppeteer:*" node script.js
# Debug output can be enabled/disabled by namespace
env DEBUG="puppeteer:protocol" node script.js # protocol connection messages
env DEBUG="puppeteer:session" node script.js # protocol session messages (protocol messages to targets)
# Protocol traffic can be rather noisy. This example filters out all Network domain messages
env DEBUG="puppeteer:session" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'
使用ndb或npx调试Puppeteer(Node.js)代码:
npm install -g ndb
debugger
ndb jest
或ndb mocha
(或npx ndb jest
/ npx ndb mocha
)您可能还需要查看有关error handling的Puppeteer文档:
对于某些类型的错误,Puppeteer使用特定的错误类别。这些类可通过
require('puppeteer/Errors')
获得。
支持的类列表:
示例用法:
const { TimeoutError } = require( 'puppeteer/Errors' );
// ...
try {
await page.waitForSelector( '.foo' );
} catch ( e ) {
if ( e instanceof TimeoutError ) {
// Handle TimeoutError here ...
}
}