【问题标题】:cannot find context with specified id undefined找不到指定 id 未定义的上下文
【发布时间】:2018-11-01 23:15:52
【问题描述】:

这是我的第一个问题帖子,所以请多多关照。

我已经编码了大约一年,并且一直在玩 puppeteer 和 headless chrome。

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

在代码尝试选择结果图像并在我的终端中引发以下错误之前,我是成功的:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝(rejection 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();
})();

请帮帮我,谢谢!

【问题讨论】:

    标签: node.js puppeteer


    【解决方案1】:

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

    请使用类似:(取决于您要点击的元素)

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

    【讨论】:

    • 我尝试了您提供的代码并解决了原始错误。然而,这就是发生的事情:chrome导航到谷歌图片,在搜索栏中输入了一个随机词并显示结果页面,但似乎浏览器刷新但转到google.com,而不是images.google.com .有时它会抛出一个不同的错误,而不是“刷新”:“无法读取未定义的属性“点击”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多