代码之家  ›  专栏  ›  技术社区  ›  four-eyes

木偶师不执行foreach

  •  0
  • four-eyes  · 技术社区  · 5 年前

    我有这个密码

      ...
      const page = await browser.newPage();
      page.on('console', msg => {
        if (msg._type === 'log') {
          console.log(msg._text);
        }
      });
      ...
    
      await page.evaluate(() => {
        document.querySelectorAll('.foo').forEach(bar => {
          console.log('This logs not');
          if (bar.querySelector('div > p').innerHTML === 'foo bar') {
            bar.querySelector('.dropdown').click();
          }
        });
      });
    

    但它没有记录任何东西。当我

      await page.evaluate(() => {
        const test = document.querySelectorAll('.foo')
        console.log('This logs');
        test.forEach(bar => {
          console.log('This logs not');
          if (bar.querySelector('div > p').innerHTML === 'foo bar') {
            bar.querySelector('.dropdown').click();
          }
        });
      });
    

    它记录第一个 console.log() . 为什么它不执行 forEach ?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Md. Abu Taher    5 年前

    document.querySelectorAll('.foo') 是空的,因为该选择器没有元素。这就是为什么你在记录的时候没有得到任何结果。

    enter image description here