puppeteer 如何判断页面是否已经完全加载
时间: 2023-02-08 09:53:21 浏览: 687
可以在页面的 `window` 对象上监听 `load` 事件来判断页面是否完全加载。当页面中所有的资源都已经加载完成时,这个事件就会被触发。
下面是一个例子:
```javascript
await page.goto('https://example.com');
await page.evaluate(() => {
return new Promise((resolve) => {
window.addEventListener('load', resolve);
});
});
console.log('page loaded');
```
还可以使用 page.waitForNavigation()
```javascript
await page.goto('https://example.com', {waitUntil: 'networkidle0'});
console.log('page loaded');
```
两种方法都可以判断页面是否完全加载,可以根据个人的需求选择使用哪种。
相关问题
``` puppeteer-core ```
`puppeteer-core`是一个Node.js库,它是Puppeteer项目的底层核心模块,用于控制Chromium浏览器。Puppeteer是一个高级的Node.js API,它提供了一种方便的方式来控制headless(无界面)和headed(有界面)的Chromium浏览器。Puppeteer可以用来自动化网页操作,如页面加载、交互、截图、PDF生成等。
以下是`puppeteer-core`的一个基本用法和一个简单的测试用例。这个测试用例确保浏览器实例能够正确打开并关闭:
```markdown
```javascript
// 导入puppeteer-core
const puppeteer = require('puppeteer-core');
// 定义测试用例
describe('Puppeteer Core Test Suite', () => {
let browser;
beforeAll(async () => {
// 打开一个新的浏览器实例
browser = await puppeteer.launch();
}, 5000); // 设置等待5秒以保证浏览器完全启动
afterAll(async () => {
// 关闭浏览器实例
await browser.close();
});
it('Should open a new page and take a screenshot', async () => {
// 创建一个新的页面
const page = await browser.newPage();
// 访问Google首页
await page.goto('https://www.google.com', { waitUntil: 'networkidle2' });
// 检查页面标题
expect(await page.title()).toBe('Google');
// 截取页面截图并保存到本地
await page.screenshot({ path: 'google_screenshot.png' });
// 确保截图文件存在
expect(fs.existsSync('google_screenshot.png')).toBe(true);
});
});
// 注意:这段代码需要在支持Node.js环境且安装了puppeteer-core和fs模块的环境中运行
// fs.existsSync()是Node.js中的文件系统方法,用于检查文件是否存在
```
**测试说明:**
1. **beforeAll**: 在所有测试之前,打开一个新的浏览器实例,并等待5秒让浏览器完全启动,以防止由于启动速度慢导致的测试失败。
2. **it**: 这个测试用例确保能打开Google首页,检查页面标题是否为'Google',然后截取页面并保存为图片,最后检查截图文件是否存在。
3. **afterAll**: 在所有测试之后,关闭浏览器实例。
这个测试用例仅作为一个基础示例,实际的测试用例可能需要根据你的应用需求进行更复杂的测试,例如处理网络请求、登录验证、错误处理等。
阅读全文