最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在伪造者的无头真实模式下找不到选择器的节点

运维笔记admin9浏览0评论

在伪造者的无头真实模式下找不到选择器的节点

在伪造者的无头真实模式下找不到选择器的节点

我的环境:

  • Puppeteer版本:1.20.0
  • 平台/操作系统版本:Ubuntu 18.04.3 LTS
  • Node.js版本:8.10.0
  • 镀铬/ 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(';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();
});
回答如下:

看起来像await page.click('#identifierNext');中没有id = identifierNext的元素

插入await page.click('#identifierNext');

尝试使用

const next = await page.waitForSelector('#identifierNext');
await next.click();

[之间不同click('#identifierNext') waitForSelector and click

waitForSelector-可以等待30,000s的元素将元素添加到DOM

单击-如果DOM中现在没有元素,则单击将拒绝Promise

发布评论

评论列表(0)

  1. 暂无评论