找不到指定id未定义的上下文

时间:2018-05-23 05:19:43

标签: node.js puppeteer

这是我的第一个问题,所以请亲切。

我已经编写了大约一年的时间,并且一直在玩木偶和无头镀铬。

我正在尝试创建一个小应用程序,对随机单词进行谷歌图像搜索,并选择/单击第一个结果图像。 (没有理由,只是一个想法)

我成功,直到代码尝试选择结果图像并在我的终端中抛出以下错误:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝  id:1):错误:协议错误(Runtime.callFunctionOn):找不到  指定id未定义的上下文

这是我的代码:

const pup = require('puppeteer');
const random = require('random-words');
const url = 'http://images.google.com';

(async() => {
  const browser = await pup.launch({headless: false});
  const page = await browser.newPage();

  await page.goto(url);
  const searchBar = await page.$('#lst-ib');
  await searchBar.click();
  await page.keyboard.type(`${random()}`);
  const submit = await page.$('#mKlEF');
  await submit.click();
  await page.keyboard.type(random());
  await page.keyboard.press('Enter');
  const pic = await page.evaluate(() => {
    return document.querySelectorAll('img');
  });

  pic.click();
})();
请帮助我,谢谢你!

1 个答案:

答案 0 :(得分:1)

document.querySelectorAll('img')不可序列化,因此返回undefined(请参阅此issue作为参考)

请使用以下内容:(取决于您要点击的元素)

await page.$$eval('img', elements => elements[0].click());