gpt4 book ai didi

javascript - 在 puppeteer 的 headless true 模式下找不到选择器的 Node

转载 作者:行者123 更新时间:2023-11-30 19:14:46 25 4
gpt4 key购买 nike

我的环境:

  • puppeteer 版本:1.20.0
  • 平台/操作系统版本:Ubuntu 18.04.3 LTS
  • Node.js 版本:8.10.0
  • Chrome/78.0.3882.0

此错误内容打印在终端:

(node:18157) UnhandledPromiseRejectionWarning: Error: No node found for selector: #identifierNext
at assert (/home/hoangdd3/node_modules/puppeteer/lib/helper.js:279:11)
at DOMWorld.click (/home/hoangdd3/node_modules/puppeteer/lib/DOMWorld.js:366:5)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
-- ASYNC --
at Frame.<anonymous> (/home/hoangdd3/node_modules/puppeteer/lib/helper.js:111:15)
at Page.click (/home/hoangdd3/node_modules/puppeteer/lib/Page.js:1037:29)
at puppeteer.launch.then (/home/hoangdd3/pupperteer/example.js:15:16)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
(node:18157) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:18157) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

这是我的代码:

const puppeteer = require('puppeteer');

puppeteer.launch({
headless: true
}).then(async browser => {
const page = await browser.newPage();
await page.setViewport({width: 1920, height: 1080});
await page.goto('https://accounts.google.com/signin/v2/identifier?flowName=GlifWebSignIn&flowEntry=ServiceLogin', {"waitUntil" : "networkidle0"});

await page.waitFor(2000);

await page.click('input[type=email]');
await page.keyboard.sendCharacter('phamvancuong4584sg@gmail.com');
await page.click('#identifierNext');

await page.waitFor(2000);

await page.evaluate(() => document.querySelector('#password > div > div > div > input').click());
await page.keyboard.sendCharacter('test');
await page.evaluate(() => document.querySelector('#passwordNext').click());

await page.screenshot({path: 'example.png'});

await browser.close();
});

最佳答案

您面临的问题是指选择器,它们根本不存在 :)。在 headless: true 中提供的 html 与在 headless: false

中提供的不同

您的代码段在 headless: false 上使用时可以正常工作

有代码可以在 headless: true 中工作

const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch({
headless: true,
});
const page = await browser.newPage();

await page.goto('https://accounts.google.com/signin/v2/identifier?flowName=GlifWebSignIn&flowEntry=ServiceLogin', {"waitUntil" : "networkidle0"});
await page.waitFor(2000);

await page.click('#Email');
await page.keyboard.sendCharacter('phamvancuong4584sg@gmail.com');

await page.click('#next');

await page.waitFor(2000);

await page.click('#Passwd');

await page.keyboard.sendCharacter('test');
await page.click('#signIn');

await page.screenshot({path: 'example.png'});

await browser.close();
})();

在屏幕 example.png 上,您可以看到密码不正确的信息(测试)。

关于javascript - 在 puppeteer 的 headless true 模式下找不到选择器的 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com