Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示给定div的所有结果,而不仅仅是一个puppeter_Javascript_Node.js_Puppeteer - Fatal编程技术网

Javascript 如何显示给定div的所有结果,而不仅仅是一个puppeter

Javascript 如何显示给定div的所有结果,而不仅仅是一个puppeter,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,对不起,文件对我来说有点不明白 我用这个论点: const myDiv = await page.$$eval(".myDiv", myDiv => myDiv.textContent); 但是当此div的结果大于10时,console.log将只返回一个结果 我如何显示它们 编辑//这是我学习的代码 const puppeteer = require('puppeteer'); (async () => { const browser = await p

对不起,文件对我来说有点不明白

我用这个论点:

const myDiv = await page.$$eval(".myDiv", myDiv => myDiv.textContent);
但是当此div的结果大于10时,console.log将只返回一个结果

我如何显示它们

编辑//这是我学习的代码

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('mypage');
  // await page.screenshot({path: 'example.png'});
  
  await page.waitForSelector(".myDiv");
  
  const myDiv = await page.$eval(".myDiv", myDiv => myDiv.textContent);
  
  console.log(myDiv);

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

因为您没有提供更多的代码,所以这个答案相当固执己见,可能无法解决您的问题。但它向你展示了一种如何理解正在发生的事情的方法

Ex特别是在开发中,结合使用
page.exposeFunction()
page.evaluate()
来查看浏览器和节点/木偶程序中的情况非常有用。 这是一份草稿,我希望它能帮助你理解

(async () => {
  function executedInNodeContext(result) {
    //this prints in the Node Console
    console.log(result);
  }

  function executedInBrowserContext() {
    console.log('Im in the Browser');
    const myDiv = [...document.querySelectorAll('.myDiv')];
    window.nameOfNodeFunction(myDiv);
  }

  // See the browser
  const browser = await puppeteer.launch({ headless: false });

  // Create a new page
  const page = await browser.newPage();

  // Callback in Node Context
  await page.exposeFunction('nameOfNodeFunction', executedInNodeContext);

  // Send puppeteer to a Url
  await page.goto('http://localhost/awesome/URL');

  // Function executed in the Browser on the given page
  await page.evaluate(executedInBrowserContext);
})();

因为您没有提供更多的代码,所以这个答案相当固执己见,可能无法解决您的问题。但它向你展示了一种如何理解正在发生的事情的方法

Ex特别是在开发中,结合使用
page.exposeFunction()
page.evaluate()
来查看浏览器和节点/木偶程序中的情况非常有用。 这是一份草稿,我希望它能帮助你理解

(async () => {
  function executedInNodeContext(result) {
    //this prints in the Node Console
    console.log(result);
  }

  function executedInBrowserContext() {
    console.log('Im in the Browser');
    const myDiv = [...document.querySelectorAll('.myDiv')];
    window.nameOfNodeFunction(myDiv);
  }

  // See the browser
  const browser = await puppeteer.launch({ headless: false });

  // Create a new page
  const page = await browser.newPage();

  // Callback in Node Context
  await page.exposeFunction('nameOfNodeFunction', executedInNodeContext);

  // Send puppeteer to a Url
  await page.goto('http://localhost/awesome/URL');

  // Function executed in the Browser on the given page
  await page.evaluate(executedInBrowserContext);
})();
您可以使用:

constmydiv=wait page.evaluate(()=>{
const divs=Array.from(document.querySelectorAll('.myDiv'))
返回divs.map(d=>d.textContent)
});
传递到
页面的函数。evaluate
将被序列化并发送到浏览器,因此它在浏览器上下文(非节点)中执行。

您可以使用:

constmydiv=wait page.evaluate(()=>{
const divs=Array.from(document.querySelectorAll('.myDiv'))
返回divs.map(d=>d.textContent)
});
传递到
页面的函数。evaluate
将被序列化并发送到浏览器,因此它在浏览器上下文(而不是节点)中执行。

页面。$$eval()
在其回调中发送一个包含元素的数组,因此您需要类似以下内容来获取所有元素数据:

constmydivs=wait page.$$eval(“.myDiv”,divs=>divs.map(div=>div.textContent));
页面。$$eval()
在其回调中发送一个包含元素的数组,因此您需要这样的内容来获取所有元素数据:

constmydivs=wait page.$$eval(“.myDiv”,divs=>divs.map(div=>div.textContent));

提供更多信息。可能不是所有div都有文本内容?尝试
constmydiv=wait page.$$eval(“.myDiv”,myDiv=>myDiv)
查看选择器是否与所有div匹配。请更具体,并显示更多的代码。确实不可能回答这个问题,使用这个小snipedit返回给我[{}、{}、{}、{}、{}、{}、{}、{}、{}、{},以及同样的东西,但是使用一个$(wait page.$eval),它将错误返回给我错误:错误:找不到匹配选择器的元素“.myDiv”提供更多信息。可能不是所有的div都有文本内容?请尝试
const myDiv=wait page.$$eval(“.myDiv”,myDiv=>myDiv);
查看您的选择器是否匹配所有div。请更具体一些,显示更多代码。确实不可能回答,因为这个小的snipedit返回给我[{},{},{},{},{},{},{},{},{},{},以及同样的东西,但是使用一个$(wait page.$eval),它会将错误返回给我错误:错误:找不到与选择器“.myDiv”匹配的元素