【发布时间】:2021-08-12 03:46:06
【问题描述】:
这个问题之前可能已经被问过,但 Stackoverflow 中的所有现有解决方案都无法帮助我。我有以下sn-p:
const puppeteer = require('puppeteer');
const loginFn = async () => {
const browser = await puppeteer.launch();
const deviceWidth = 1920;
const deviceHeight = 1080;
const page = await browser.newPage();
await page.setCacheEnabled(false);
await page.setViewport({ width: deviceWidth, height: deviceHeight });
await page.setUserAgent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
);
await page.goto('https://testwebsite.com/');
await page.click('.qrNYy');
await page.waitForSelector('input[type="email"]');
await page.waitForSelector('input[type="password"]');
await page.type('input[type="email"]', 'test@gmail.com');
await page.type('input[type="password"]', 'test123');
await Promise.all([
page.click('.ffwHVz'),
page.waitForNavigation({
waitUntil: 'networkidle0',
}),
]);
await page.screenshot({ path: 'example.png' });
await browser.close();
}
(async () => {
await loginFn();
})();
我总是得到TimeoutError: Navigation timeout of 30000 ms exceeded 错误,我尝试了waitUntil 的所有选项,包括networkidle0、networkidle2、load 和domcontentloaded 都无济于事(这些来自谷歌搜索和stackoverflow)。正如许多上述解决方案所建议的那样,我还在click 和waitForNavigation 上使用了Promise.all,但我似乎无法绕过这个问题。
是网站本身的原因吗?这取决于网站本身还是我的代码?注意:testwebsite.com 只是一个示例,但这正是我正在测试的网站上发生的情况,无论我多么努力,我似乎都无法通过。有人可以帮我吗?
【问题讨论】:
-
您实际抓取的是哪个网站?代码乍一看似乎没问题,但我真的不能运行它来多说。
-
@ggorlen coinmarketcap.com
标签: javascript node.js puppeteer headless-browser