Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
137
rated 0 times [  142] [ 5]  / answers: 1 / hits: 7471  / 5 Years ago, thu, september 26, 2019, 12:00:00

My enviroment:




  • Puppeteer version: 1.20.0

  • Platform / OS version: Ubuntu 18.04.3 LTS

  • Node.js version: 8.10.0

  • Chrome/78.0.3882.0



This error content was printed in terminal:



(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.


This my 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('[email protected]');
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();
});

More From » node.js

 Answers
13

the problem you are facing refers to selectors, they simply do not exist :). html served in headless: true is different to the one on headless: false



Your snippet works correctly when used on headless: false



There is code which will work in 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('[email protected]');

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();
})();


On screen example.png you can see info with incorrect password (test).


[#6116] Tuesday, September 24, 2019, 5 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
raveno

Total Points: 453
Total Questions: 92
Total Answers: 92

Location: France
Member since Thu, Oct 27, 2022
2 Years ago
;