【发布时间】:2020-11-20 16:31:59
【问题描述】:
我有以下脚本
const puppeteer = require('puppeteer');
async function startBrowser() {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
return {browser, page};
}
async function closeWindows(page) {
await page.waitForSelector(selector1);
await page.click(selector1);
await page.waitForSelector(selector1);
await page.click(selector2);
}
async function doStuff(URL) {
const {browser, page} = await startBrowser();
await page.goto(URL);
await closeWindows(page);
}
doStuff(URL)
其中定义了selector1、selector2 和URL。
这很好用,但是当我尝试在无头模式下运行它时,我会收到以下错误消息:
TypeError: Cannot read property 'waitForSelector' of undefined。我已经尝试过使用
await page.waitForNavigation({ waitUntil: 'networkidle0' })
但这只是让我一直等到收到 TimeoutError。如果这有帮助:该 URL 是一个 youtube 视频。
【问题讨论】:
-
@Chris 在他的回答中指出,页面没有完全加载。您应该在代码中添加
waitUntil,并专门等待domcontentloaded。load可能还不够,networkidel2可能需要您等待太久。 -
@AbrarHossain 这不起作用。同样,只有无头模式会出现此问题。
-
您是否尝试访问视频播放器?因为这甚至可能无法在无头模式下加载
-
是的,我是,不过是手机模式下自动打开的问题。
标签: javascript node.js puppeteer